您的位置:首页 > 移动开发 > IOS开发

ios 分享到新浪微博

2013-01-06 18:43 330 查看
参考(tiny4cocoa):http://tiny4cocoa.com/thread-1771-1-1.html

参考(csdn):http://blog.csdn.net/sjzsp/article/details/6338842
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 ];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: