您的位置:首页 > 其它

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 ];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: