在objective-c上传Twitter个人资料图片

时间:2009-12-17 12:48:56

标签: iphone objective-c twitter

我想使用objective-c将图像上传到我的Twitter个人资料中。我在twitter API中看到我需要向http://twitter.com/account/update_profile_image.format发送HTML帖子并将图片作为参数发送。我完成了身份验证。我坚持上传。也许有人可以帮我发送图片作为参数?

4 个答案:

答案 0 :(得分:2)

您应该使用NSURLRequestsNSURLConnection来执行API请求。如果是这样,您需要做的就是创建一个NSMutableURLRequest,将其设置为Twitter图像上传API URL的URL,将方法设置为POST。

然后,您需要创建一个NSData对象来表示您的图像,您可以使用

NSData *myImageData = [[NSData alloc] initWithData:[myImage CGImage]];

我不知道Twitter的上传API的参数名称是什么,所以为了论证,我们称之为“图像”。接下来你需要做的是将图像数据设置为“image”参数的请求主体,如下所示

NSString *bodyString = [NSString stringWithFormat:@"image=%@", [[[NSString alloc] initWithData:myImageData encoding:NSStringUTF8Encoding] autorelease]];
[myRequest setBody:bodyString];

然后您可以使用请求启动NSURLConnection,它应该上传。

答案 1 :(得分:0)

如果您已成功入门,那么this post on CocoaDev应该可以帮助您设置上传。顶部还有一个样本链接。

答案 2 :(得分:0)

我建议使用ASIHTTPRequest

  

什么是ASIHTTPRequest?

     

ASIHTTPRequest是一个易于使用的CFNetwork API包装器,它使与Web服务器通信的一些更繁琐的方面更容易。它是用Objective-C编写的,适用于Mac OS X和iPhone应用程序。

     

适合执行基本HTTP请求并与基于REST的服务(GET / POST / PUT / DELETE)交互。包含的ASIFormDataRequest子类使用multipart / form-data轻松提交POST数据和文件。

请参阅此blog post以获取示例

答案 3 :(得分:0)

像这样 //见http://groups.google.com/group/twitter-development-talk/browse_thread/thread/df7102654c3077be/163abfbdcd24b8bf

NSString *postUrl = @"http://api.twitter.com/1/account/update_profile_image.json";
ASIFormDataRequest *req = [[ASIFormDataRequest alloc] initWithURL:[NSURL 
URLWithString:postUrl]];
[req addRequestHeader:@"Authorization" value:[oAuth oAuthHeaderForMethod:@"POST" 
andUrl:postUrl andParams:nil]];

[req setData:UIImageJPEGRepresentation(imageView.image, 0.8)
withFileName:@"myProfileImage.jpg"
andContentType:@"image/jpeg" forKey:@"image"];    

[req startSynchronous];
NSLog(@"Got HTTP status code from Twitter after posting profile image: %d", [req   
responseStatusCode]);
NSLog(@"Response string: %@", [req responseString]);
[req release];