ios 分享到新浪微博

参考(tiny4cocoa):http://tiny4cocoa.com/thread-1771-1-1.html

参考(csdn):http://blog.youkuaiyun.com/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 ][ UIAlertView alloc ] initWithTitle : @"" message :message
delegate : self
cancelButtonTitle : @" 确定 " otherButtonTitles : nil ];
[alert show ];
[alert release ];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值