我是objective-c的新手,我一直在寻找一种方法向我的服务器发送一个帖子请求(基于Rest URL),但也包含一个图像...我发现了很多发布数据的方法...以及发布图像的方法,但没有任何结合两者的方法......
我正在寻找一个包装器,类或库,因为从头开始编写所有这些似乎是一项繁琐的工作。我找到了“ASIHTTPRequest”,但不再支持,虽然我关闭了ARC,我宁愿找到一些仍然支持的东西......
我还发现了AFNetworking,它似乎仍然受到支持,但我可能错了,我找不到一个解决方案来组合非常简单的数据和个人资料图像......
感谢任何帮助?
我应该只使用ASIHTTPRequest库吗?或者有没有人有AFNetworking库的示例代码?
以下是我用于AFnetworking库的代码......
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
_emailAddressField.text, @"email",
_usernameField.text, @"username",
_passwordField.text, @"password",
nil];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:%"http://url.com/api/whatever/"];
[client postPath:@"/" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSString *text = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"Response: %@", text);
} failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"%@", [error localizedDescription]);
}];
答案 0 :(得分:0)
如果您正在使用AFNetworking,则可以使用multipartFormRequestWithMethod
上传图片:
// Create the http client
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseUrl:url];
// Set parameters
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys: @"param1", @"key1", nil];
// Create the request with the image data and file name, mime type, etc.
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:method path:@"url/to/" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:data name:nameData fileName:fileName mimeType:mimeType];
}];
然后您可以添加上传进度块以获取上传过程的反馈:
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
//Manage upload percentage
}];
此外,您可以添加setCompletionBlockWithSuccess
以捕获操作中的成功和失败。可以找到更多信息here。最后但同样重要的是,将请求添加到操作队列:
[httpClient enqueueHTTPRequestOperation:operation];