iPhone程序中将内容分享到新浪微博
2011-11-28 13:13
363 查看
因为要用到,所以找来,和大家分享:
1. 首先在http://open.t.sina.com.cn / 中申请成为开发者,再创建不同的应用,获得相应的 App
Key (在下面链接中的source即为app
key)
2. 登录认证:
NSString *authString
= [ NSString stringWithFormat : @"%@:%@" , sinaIDField . text , sinaPasswordField . text ];
NSData *authData
= [authString dataUsingEncoding : NSUTF8StringEncoding ];
NSString *authValue
= [ NSString stringWithFormat : @"Basic
%@" ,[authData base64EncodingWithLineLength : 80 ]];
NSURL *url
= [ NSURL URLWithString : @"http://api.t.sina.com.cn/account/verify_credentials.xml?source=3930264715 " ];
NSMutableURLRequest *request
= [[ NSMutableURLRequest alloc ] initWithURL :url];
[request setHTTPMethod : @"GET" ];
[request setValue :authValue forHTTPHeaderField : @"Authorization" ];
NSURLResponse *response;
NSError *error;
[ NSURLConnection sendSynchronousRequest :request returningResponse :&response error :&error];
[request release ];
NSHTTPURLResponse *httpResponse
= ( NSHTTPURLResponse *)response;
int statusCode
= [httpResponse statusCode ];
NSLog ( @"status
code = %d" ,statusCode);
if (statusCode
!= 200 )
{
alertTitle = @" 帐号或密码错误 " ;
alertMassage = @" 请您输入正确的帐号和密码! " ;
} else {
alertTitle = @"" ;
alertMassage = @" 登录成功! " ;
}
}
UIAlertView *alert
= [[ UIAlertView alloc ] initWithTitle :alertTitle
message :alertMassage
delegate : nil cancelButtonTitle : @" 确定 "
otherButtonTitles : nil ];
[alert show ];
[alert release ];
3. 将内容(图片 文字)发送到新浪微博
NSString *authString
= [ NSString stringWithFormat : @"%@:%@" ,[[ NSUserDefaults standardUserDefaults ] objectForKey : @"sinaID"],[[ NSUserDefaults standardUserDefaults ] objectForKey : @"sinaPassword" ]];
NSData *authData
= [authString dataUsingEncoding : NSUTF8StringEncoding ];
NSString *authValue
= [ NSString stringWithFormat : @"Basic
%@" ,[authData base64EncodingWithLineLength : 80 ]];
NSString *boundary
= @"0xKhTmLbOuNdArYckkk" ;
NSString *filename
= @" test .jpg" ;
NSData *imageData
= UIImageJPEGRepresentation (shareImage, 1 );
NSString *bodyPrefixString =
[ NSString stringWithFormat : @"--%@/r/n" ,
boundary];
NSString *bodySuffixString =
[ NSString stringWithFormat : @"/r/n--%@--/r/n" ,
boundary];
NSString *contentDisposition
= [ NSString stringWithFormat : @"Content-Disposition:
form-data; name="pic"; filename="%@"/r/n" , filename];
NSString *contentImageType =
[ NSString stringWithFormat : @"Content-Type:
image/%@/r/n" , [filename pathExtension ]];
NSString *contentTransfer = @"Content-Transfer-Encoding:
binary/r/n/r/n" ;
NSString *bodyUpdateField
= [ NSString stringWithFormat : @"Content-Disposition:
form-data;name="status"/r/n/r/n%@/r/n" ,[ NSString stringWithFormat : @"%@" , textView . text ]];
NSMutableData *postBody
= [ NSMutableData data ];
[postBody appendData :[bodyPrefixString dataUsingEncoding : NSUTF8StringEncoding allowLossyConversion : NO ]];
[postBody appendData :[bodyUpdateField dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :[bodyPrefixString dataUsingEncoding : NSUTF8StringEncoding allowLossyConversion : NO ]];
[postBody appendData :[contentDisposition dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :[contentImageType dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :[contentTransfer dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :imageData];
[postBody appendData :[bodySuffixString dataUsingEncoding : NSUTF8StringEncoding allowLossyConversion : NO ]];
NSString *baseURL
= [ NSString stringWithFormat : @"http://api.t.sina.com.cn/statuses/upload.xml?source=3930264715 " ];
NSURL *url
= [ NSURL URLWithString :baseURL];
NSMutableURLRequest *mainRequest
= [[ NSMutableURLRequest alloc ] initWithURL :url
cachePolicy : NSURLRequestUseProtocolCachePolicy
timeoutInterval : 30.0f ];
[mainRequest setHTTPMethod : @"POST" ];
[mainRequest setValue :authValue forHTTPHeaderField : @"Authorization" ];
NSString *contentType
= [ NSString stringWithFormat : @"multipart/form-data;
boundary=%@" , boundary, nil ];
[mainRequest setValue :contentType forHTTPHeaderField : @"Content-Type" ];
[mainRequest setHTTPBody :postBody];
NSURLResponse *shareResponse;
NSError *error;
NSData *responseData
= [ NSURLConnection sendSynchronousRequest :mainRequest returningResponse :&shareResponse error :&error];
NSString *responseString
= [[ NSString alloc ] initWithData :responseData encoding : NSUTF8StringEncoding ];
NSHTTPURLResponse *httpResponse
= ( NSHTTPURLResponse *)shareResponse;
int statusCode
= [httpResponse statusCode ];
NSLog ( @"status
code = %d" ,statusCode);
BOOL succeed
= NO ;
if (statusCode
== 200 )
{
succeed = YES ;
}
[mainRequest release ];
NSLog ( @"response
string : %@" ,responseString);
[responseString release ];
[ uploadWaiting stopAnimating ];
NSString *message
= nil ;
if (succeed)
{
message = @" 分享成功 " ;
} else {
message = @" 分享失败 " ;
}
UIAlertView *alert
= [[ UIAlertView alloc ] initWithTitle : @"" message :message
delegate : self
cancelButtonTitle : @" 确定 " otherButtonTitles : nil ];
[alert show ];
[alert release ];
1. 首先在http://open.t.sina.com.cn / 中申请成为开发者,再创建不同的应用,获得相应的 App
Key (在下面链接中的source即为app
key)
2. 登录认证:
NSString *authString
= [ NSString stringWithFormat : @"%@:%@" , sinaIDField . text , sinaPasswordField . text ];
NSData *authData
= [authString dataUsingEncoding : NSUTF8StringEncoding ];
NSString *authValue
= [ NSString stringWithFormat : @"Basic
%@" ,[authData base64EncodingWithLineLength : 80 ]];
NSURL *url
= [ NSURL URLWithString : @"http://api.t.sina.com.cn/account/verify_credentials.xml?source=3930264715 " ];
NSMutableURLRequest *request
= [[ NSMutableURLRequest alloc ] initWithURL :url];
[request setHTTPMethod : @"GET" ];
[request setValue :authValue forHTTPHeaderField : @"Authorization" ];
NSURLResponse *response;
NSError *error;
[ NSURLConnection sendSynchronousRequest :request returningResponse :&response error :&error];
[request release ];
NSHTTPURLResponse *httpResponse
= ( NSHTTPURLResponse *)response;
int statusCode
= [httpResponse statusCode ];
NSLog ( @"status
code = %d" ,statusCode);
if (statusCode
!= 200 )
{
alertTitle = @" 帐号或密码错误 " ;
alertMassage = @" 请您输入正确的帐号和密码! " ;
} else {
alertTitle = @"" ;
alertMassage = @" 登录成功! " ;
}
}
UIAlertView *alert
= [[ UIAlertView alloc ] initWithTitle :alertTitle
message :alertMassage
delegate : nil cancelButtonTitle : @" 确定 "
otherButtonTitles : nil ];
[alert show ];
[alert release ];
3. 将内容(图片 文字)发送到新浪微博
NSString *authString
= [ NSString stringWithFormat : @"%@:%@" ,[[ NSUserDefaults standardUserDefaults ] objectForKey : @"sinaID"],[[ NSUserDefaults standardUserDefaults ] objectForKey : @"sinaPassword" ]];
NSData *authData
= [authString dataUsingEncoding : NSUTF8StringEncoding ];
NSString *authValue
= [ NSString stringWithFormat : @"Basic
%@" ,[authData base64EncodingWithLineLength : 80 ]];
NSString *boundary
= @"0xKhTmLbOuNdArYckkk" ;
NSString *filename
= @" test .jpg" ;
NSData *imageData
= UIImageJPEGRepresentation (shareImage, 1 );
NSString *bodyPrefixString =
[ NSString stringWithFormat : @"--%@/r/n" ,
boundary];
NSString *bodySuffixString =
[ NSString stringWithFormat : @"/r/n--%@--/r/n" ,
boundary];
NSString *contentDisposition
= [ NSString stringWithFormat : @"Content-Disposition:
form-data; name="pic"; filename="%@"/r/n" , filename];
NSString *contentImageType =
[ NSString stringWithFormat : @"Content-Type:
image/%@/r/n" , [filename pathExtension ]];
NSString *contentTransfer = @"Content-Transfer-Encoding:
binary/r/n/r/n" ;
NSString *bodyUpdateField
= [ NSString stringWithFormat : @"Content-Disposition:
form-data;name="status"/r/n/r/n%@/r/n" ,[ NSString stringWithFormat : @"%@" , textView . text ]];
NSMutableData *postBody
= [ NSMutableData data ];
[postBody appendData :[bodyPrefixString dataUsingEncoding : NSUTF8StringEncoding allowLossyConversion : NO ]];
[postBody appendData :[bodyUpdateField dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :[bodyPrefixString dataUsingEncoding : NSUTF8StringEncoding allowLossyConversion : NO ]];
[postBody appendData :[contentDisposition dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :[contentImageType dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :[contentTransfer dataUsingEncoding : NSUTF8StringEncoding ]];
[postBody appendData :imageData];
[postBody appendData :[bodySuffixString dataUsingEncoding : NSUTF8StringEncoding allowLossyConversion : NO ]];
NSString *baseURL
= [ NSString stringWithFormat : @"http://api.t.sina.com.cn/statuses/upload.xml?source=3930264715 " ];
NSURL *url
= [ NSURL URLWithString :baseURL];
NSMutableURLRequest *mainRequest
= [[ NSMutableURLRequest alloc ] initWithURL :url
cachePolicy : NSURLRequestUseProtocolCachePolicy
timeoutInterval : 30.0f ];
[mainRequest setHTTPMethod : @"POST" ];
[mainRequest setValue :authValue forHTTPHeaderField : @"Authorization" ];
NSString *contentType
= [ NSString stringWithFormat : @"multipart/form-data;
boundary=%@" , boundary, nil ];
[mainRequest setValue :contentType forHTTPHeaderField : @"Content-Type" ];
[mainRequest setHTTPBody :postBody];
NSURLResponse *shareResponse;
NSError *error;
NSData *responseData
= [ NSURLConnection sendSynchronousRequest :mainRequest returningResponse :&shareResponse error :&error];
NSString *responseString
= [[ NSString alloc ] initWithData :responseData encoding : NSUTF8StringEncoding ];
NSHTTPURLResponse *httpResponse
= ( NSHTTPURLResponse *)shareResponse;
int statusCode
= [httpResponse statusCode ];
NSLog ( @"status
code = %d" ,statusCode);
BOOL succeed
= NO ;
if (statusCode
== 200 )
{
succeed = YES ;
}
[mainRequest release ];
NSLog ( @"response
string : %@" ,responseString);
[responseString release ];
[ uploadWaiting stopAnimating ];
NSString *message
= nil ;
if (succeed)
{
message = @" 分享成功 " ;
} else {
message = @" 分享失败 " ;
}
UIAlertView *alert
= [[ UIAlertView alloc ] initWithTitle : @"" message :message
delegate : self
cancelButtonTitle : @" 确定 " otherButtonTitles : nil ];
[alert show ];
[alert release ];
相关文章推荐
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博(zz)
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- [转载]iPhone程序中将内容分享到新浪微博
- 改良版twitter for iphone的照片分享程序
- 内容正文选中一段文字分享到qq微博、新浪微博的代码
- 分享iPhone开发者需掌握的音频内容
- 微信小程序开发关于分享功能中怎么定义同一个页面中不同的按钮触发不同的分享内容,或者右上角的分享和页面中分享
- 通过友盟分享内容到新浪微博错误解决方法
- 使用Intent.ACTION_SEND分享图片和文字内容(新浪微博,短信等)
- Android 应用程序之间内容分享 当不存在能够分享的程序 [整理]
- 浅谈高大上的微信小程序中渲染html内容―技术分享
- js实现将选中的内容分享到新浪微博,腾讯微博
- 分享iPhone开发者需掌握的音频内容
- [分享]xcode免证书真机调试iphone(ipad)程序的具体方法(总结贴))