gpt4 book ai didi

ios - 如何为此示例 url 使用 AFNetwowrking2.0 代码?

转载 作者:行者123 更新时间:2023-11-29 02:04:29 25 4
gpt4 key购买 nike

您好,我有一个返回 JSON 格式的示例 url。但是当我使用 AFNetWorking2.0 从该 URL 获取响应时,我没有得到正确的响应。我也在这里发送我的代码。

- (void)testHTTPS {
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager setSecurityPolicy:securityPolicy];

[manager GET:@"xxxxx"
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
NSString* newStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
}

我得到的 JSON Dic 始终为零。如果我打印“newstr”,我会收到 html 格式的响应。谁能找到正确的方法?

我已经按照约翰所说的做了,但我得到了以下结果

Error: Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0x7ffb39c52ed0 {com.alamofire.serialization.response.error.response= { URL: xxxxx } { status code: 200, headers { "Cache-Control" = "public, max-age=10800"; "Content-Encoding" = gzip; "Content-Length" = 2922; "Content-Type" = "text/html"; Date = "Wed, 29 Apr 2015 06:49:54 GMT"; Expires = "Wed, 29 Apr 2015 09:49:55 GMT"; "Last-Modified" = "Wed, 01 Apr 2015 03:19:39 GMT"; Server = "ECAcc (hhp/9ABE)"; Vary = "Accept-Encoding"; "X-Cache" = HIT; } }, NSErrorFailingURLKey=xxxxx, com.alamofire.serialization.response.error.data=<0d0a3c21 444f4354 59504520 68746d6c 20505542 4c494320 222d2f2f 5733432f 2f445444 20584854 4d4c2031 2e302054 72616e73 6974696f 6e616c2f 2f454e22 20226874 74703a2f 2f777777 2e77332e 6f72672f 54522f78 68746d6c 312f4454 442f7868 746d6c31 2d747261 6e736974 696f6e61 6c2e6474 64223e0d 0a3c6874 6d6c2078 6d6c6e73 3d226874 74703a2f 2f777777 2e77332e 6f72672f 31393939 2f786874 6d6c223e 0d0a3c68 6561643e 0d0a3c6d 65746120 68747470 2d657175 69763d22 436f6e74 656e742d 54797065 2220636f 6e74656e >, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}

最佳答案

问题是您使用的是 AFHTTPResponseSerializer 而不是 AFNetworking 的 AFJSONResponseSerializer。因此,当收到响应时,它会将其解析为 HTTP 响应而不是 JSON 响应。这很容易通过将 manager.responseSerializer 分配给 AFJSONResponseSerializer 来解决:

manager.responseSerializer = [AFJSONResponseSerializer serializer];

您会发现您不需要从响应中创建 NSDictionary - 成功后它应该已经作为 NSDictionary 对象通过。

查看 AFNetworking 2.0 migration guide 。这是一本非常方便的读物,会让您了解将来需要注意什么。

关于ios - 如何为此示例 url 使用 AFNetwowrking2.0 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29933407/

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