【问题标题】:Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response"错误域=NSURLErrorDomain 代码=-1017 “无法解析响应”
【发布时间】:2015-07-01 10:45:50
【问题描述】:

这里我在发布 json 时遇到错误。

Error Domain=NSURLErrorDomain Code=-1017 "无法解析响应" UserInfo=0x7f89dac01a40 {NSUnderlyingError=0x7f89e0277a20 "无法解析响应", NSErrorFailingURLStringKey=http://test-onboard.qlc.in/FieldSense/authenticate, NSErrorFailingURLKey=http://test-onboard.qlc.in/FieldSense/authenticate, _kCFStreamErrorDomainKey=4, _k NSLocalizedDescription=无法解析响应}

这是我的代码:

NSDictionary *dictionaryData=[[NSDictionary alloc]initWithObjectsAndKeys:self.txtUsername.text, @"userEmailAddress", self.txtPassword.text, @"password",nil];            
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryData options:kNilOptions error:&error];

[request setURL:url];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];

【问题讨论】:

  • 写下更多细节。帮助我们了解问题所在。
  • 您的回复似乎有问题,如错误所示。能否请您出示一下您的回复?

标签: ios objective-c ios8


【解决方案1】:

我也遇到了这个错误,但我通过添加一行来解决这个问题

request.HTTPMethod = "POST"

对于 Objective-C 编程使用这个:

[request setHTTPMethod:@"POST"];

【讨论】:

  • "Assignment is reabonly property"! AFVnetworking v3.0
  • 使用 NSMutableURLRequest 修改 HTTPMethod。
【解决方案2】:

我在使用 Alamofire 时遇到了同样的问题,错误导致了这个问题:

let encoding = Alamofire.ParameterEncoding.JSON let (encodedRequest, _) = encoding.encode(URLRequest, parameters: params)

我的变量参数是 dict [:]。我更改为参数:nil,它的工作。

【讨论】:

    【解决方案3】:

    对于获得error code -1017 的任何其他人——我通过在我的http 请求中手动设置我的http 标头来修复它。我认为服务器在解析 HTTP 标头时遇到问题,因为我的标头没有像这样的引号,而不是字符串“授权”:“qii2nl32j2l3jel”:授权:“1i2j12j”。祝你好运。

    类似这样的:

    NSDictionary* newRequestHTTPHeader = [[NSMutableDictionary alloc] init];
    [newRequestHTTPHeader setValue:authValue forKey:@"\"Authorization\""];
    [newRequestHTTPHeader setValue:contentLengthVal forKey:@"\"Content-Length\""];
    [newRequestHTTPHeader setValue:contentMD5Val forKey:@"\"Content-MD5\""];
    [newRequestHTTPHeader setValue:contentTypeVal forKey:@"\"Content-Type\""];
    [newRequestHTTPHeader setValue:dateVal forKey:@"\"Date\""];
    [newRequestHTTPHeader setValue:hostVal forKey:@"\"Host\""];
    [newRequestHTTPHeader setValue:publicValue forKey:@"\"public-read-write\""];
    
    //the proper request is built with the new http headers.
    NSMutableURLRequest* request2 = [[NSMutableURLRequest alloc] initWithURL:request.URL];
    [request2 setAllHTTPHeaderFields:newRequestHTTPHeader];
    [request2 setHTTPMethod:request.HTTPMethod];
    

    【讨论】:

      【解决方案4】:

      在 get 请求中设置参数时出现这个 1017 错误:

      let headers = [
           "Cookie": "",
      ]
      
      Alamofire.request(urlString, parameters: ["token": token],encoding: JSONEncoding.default, headers: headers).responseJSON { ...
      

      这没有错误:

      let headers = [
          "Cookie": "",
          "Authorization" : "Token " + token
      ]
      
      Alamofire.request(urlString, method: .get, encoding: JSONEncoding.default, headers: headers).responseJSON {
      

      【讨论】:

        猜你喜欢
        • 2022-07-01
        • 2015-02-12
        • 1970-01-01
        • 2016-05-10
        • 2017-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多