gpt4 book ai didi

ios - 使用 afnetworking 2.1.0 实现 "Upload Task for a Multi-Part Request"时出错

转载 作者:行者123 更新时间:2023-11-29 12:53:08 26 4
gpt4 key购买 nike

Afnetworking 2.1 - 我正在尝试为多部分请求创建上传任务。我正在使用 Mattt 在文档中提供的示例代码。

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil];
} error:nil];

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSProgress *progress = nil;

NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"%@ %@", response, responseObject);
}
}];

[uploadTask resume];

我一直收到这个错误,我不知道为什么。

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x8ac1a00 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set., NSUnderlyingError=0x8ac1100 "Request failed: unacceptable (406)"}

谢谢。任何帮助都是可观的。

最佳答案

有两件事正在发生:

  1. 您的服务器拒绝您的 HTTP 请求 HTTP status code 406 .
  2. 响应正文不是有效的 JSON。

在继续之前,您可能希望安装 AFNetworkActivityLogger在您的项目中,以便您可以在调试时更轻松地检查网络请求。

就 #1 而言,其原因取决于您的服务器的语义。 responseObject 中可能有线索。如果 NSURLResponse *responseNSHTTPURLResponse 类型,您还可以检查 header (allHeaderFields) 以获取线索。您还可以查阅 API 文档或编写服务器的任何人来弄清楚为什么会返回 406。

对于 #2 - AFURLSessionManager 默认使用 AFJSONResponseSerializer解析服务器的响应。如果服务器的响应不是 JSON 格式,您可能需要使用不同的序列化程序。如果它可能有多种格式,您需要创建一个 AFCompoundResponseSerializer 来处理 JSON 以及您的服务器可能返回的任何其他格式。

最后,如果您使用的是 HTTP,您可能希望使用 AFHTTPSessionManager 而不是 AFURLSessionManager

关于ios - 使用 afnetworking 2.1.0 实现 "Upload Task for a Multi-Part Request"时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21930776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com