gpt4 book ai didi

ios - 带有 sendAsynchronousRequest 的 iPad 1 "400 BadRequest",全部在 iPad 3 上运行

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:11:03 25 4
gpt4 key购买 nike

我有一个带有一些 api 的服务器,我将这个 api 与 iPad 作为客户端一起使用。代码如下:

    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://***/api/user"]];
req.HTTPMethod = @"put";
req.HTTPBody = data; // it is string data from json dictionary

[NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

NSString *userData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//...
}];

在 iPad 3 上一切正常,但是当我尝试在 iPad 1 上测试该代码时,出现错误。更具体地说:我的服务器只返回 JSON,即使有一些错误,所以我可以看到错误是在客户端还是在服务器端。所以,通常情况下,userData 应该包含一些带字典的字符串:

{ "auth": 1, "email":"some@mail.com", "error": 0} 

有时服务器会返回(如果我尝试向它发送不正确的身份验证数据):

{ "auth": 0, "email":"", "error": 400, "errorMessage":"Bad Request"} 

但我在 iPad 1 上得到的是 html 字符串:

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.2.1</center>
</body>
</html>

我有点困惑,因为有完全相同的选项,相同的互联网连接,但 iPad 1 和 iPad 3 的行为不同。重要提示:iPad 1 有 iOS 5.1.1,iPad 3 有 6.1。应该有一个非常简单的解决方案,但我无法弄清楚。我也不确定 iPad 的型号是否真的很重要。另外,我尝试了同步请求,但它也没有用......

最佳答案

根据 http://w3.org/Protocols/rfc2616/rfc2616-sec5.html , HTTP 方法是区分大小写的,所以你应该使用

req.HTTPMethod = @"PUT";

似乎 iOS 6 会自动将请求方法转换为大写,而 iOS 5 不会(可以使用网络监视器检查)。

关于ios - 带有 sendAsynchronousRequest 的 iPad 1 "400 BadRequest",全部在 iPad 3 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15481412/

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