所以我正在尝试使用他们的网络服务将文件(图片)上传到服务器UploadFile
需要 2 个变量。
FileInfo info
和 a int requestId
(在我的情况下始终为 0)该FileInfo
对象包含多个变量name
(字符串)、description
(字符串)、content
(文件的二进制数据,在这种情况下它将是图像)、id
(字符串)和name
(字符串)
如何与此服务器交互以使请求通过?通常,当我一直在拉/发布信息时,我只是在进行 JSON 调用,但我猜上传是不同的。当服务需要传递自定义对象时,我不确定如何执行此操作。
我需要在我的应用程序中创建对象吗?
我正在尝试使用 AFNetworking 的AFHTTPRequestOperations
。
我正在尝试将他们的示例用作跳板,但我仍然需要确保在他们的上传示例中进行哪些更改,因为该示例使用直接上传图像并且我需要上传 FileInfo 对象而不是 jpeg。
NSURL *url = [NSURL URLWithString:@"https://SomeDomain.com/Services/FileService.svc/UploadFile"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSData *imageData = UIImageJPEGRepresentation([self.photoImageView image], 0.5);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData:imageData name:@"avatar" fileName:@"Upload.jpg" mimeType:@"image/jpg"];
}];
NSLog(@"Request %@", [request description]);
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSLog(@"Operation: %@", [operation description]);
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"RESPONSE: %@", [responseObject description]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed: %@", [error description]);
}];
[httpClient enqueueHTTPRequestOperation:operation];
谢谢,艾伦