iphone - AFNetworking HTTP POST上传图像即将完成时停止

标签 iphone ios cocoa-touch http-post afnetworking

我正在使用以下代码对包含JPEG图像的多部分Web表单进行HTTP POST。

代码:

NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:nameField.text forKey:@"name"];
[params setObject:emailField.text forKey:@"email"];
[params setObject:titleField.text forKey:@"title"];
[params setObject:dateString forKey:@"link"];
[params setObject:descriptionTV.text forKey:@"content"];
[params setObject:tag forKey:@"tags"];

NSData* sendData = UIImageJPEGRepresentation(uploadedPhoto.image, 1.0);
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://example.com/"]];
NSMutableURLRequest *afRequest = [httpClient multipartFormRequestWithMethod:@"POST"
                                                                       path:@"form"
                                                                 parameters:params
                                                  constructingBodyWithBlock:^(id <AFMultipartFormData>formData)
                                  {
                                      [formData appendPartWithFileData:sendData
                                                                  name:@"image"
                                                              fileName:@"image.jpeg"
                                                              mimeType:@"image/jpeg"];
                                  }];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:afRequest];
[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(@"SUCCESS! %@", operation.responseString);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"FAILED!!! %@", operation.responseString);
}];

[operation start];

Web表单:
<input type="text" name="name" id="name" value="" />
<input type="text" name="email" id="email" value="" />
<input type="text" name="title" id="title" value="" />
<input type="text" name="link" id="link" value="" />
<input type="text" name="content" id="content" value="" />
<input type="text" name="tags" id="tags" value="" />
<input type="file" name="image" id="image" value="" />

每次我运行代码时,图像上传都会很顺利,直到即将完成上传进度为止(已完成〜99.5%)。该操作的completionBlockWithSuccess:failure:块从不启动,该应用程序在那里冻结。

谁能帮我这个忙吗?我不知道我在做什么错。

编辑:

我进行了更多调查,发现即使请求路径无效,它也可以执行相同的操作,但是我敢肯定,我输入的表单路径没有错误。另外,当我将constructingBodyWithBlock块替换为nil时,它将正常工作。

编辑2:

我在AFNetworking的Github上进行了窥探,发现了a Github issue posta similar post on Stack Overflow。我尝试使用[httpClient enqueueHTTPRequestOperation:operation];而不是[operation start];并将httpClient设置为单例,但是仍然存在相同的问题。

最佳答案

您是否尝试在失败回调中打印NSError?也许服务器正在期待另一种mime类型。

关于iphone - AFNetworking HTTP POST上传图像即将完成时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16057283/

相关文章:

ios - WKWebView 页面进入透明状态栏

cocoa-touch - Interface Builder 中提供 "Mode"、 "Scale to fill"等的 "Aspect fit"属性是什么?

iphone - 如何在表格 View 内显示表格单元格的详细 View ?

ios - 自动释放范围

iphone - 如何减少iPhone中多行UILabel中两行之间的间距

iphone - UIToolbar 的多个类别

iphone - iOS:当某些UI元素可能会改变大小时,如何通过IB适本地一个一个地调整UI元素的位置?

ios - 我的 CLLocation 做错了什么?

ios - iPhone 4 中的 View 宽度问题?

ios - 等待 firebase 请求加载以继续的问题