- 参考(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 ];
ios 分享到新浪微博
最新推荐文章于 2019-07-25 14:36:51 发布