我想使用objective-c将图像上传到我的Twitter个人资料中。我在twitter API中看到我需要向http://twitter.com/account/update_profile_image.format
发送HTML帖子并将图片作为参数发送。我完成了身份验证。我坚持上传。也许有人可以帮我发送图片作为参数?
答案 0 :(得分:2)
您应该使用NSURLRequests
和NSURLConnection
来执行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)
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];