iOS POST不支持';我不能在HTTPS上工作

iOS POST不支持';我不能在HTTPS上工作,ios,post,https,nsurlconnection,Ios,Post,Https,Nsurlconnection,我有一些代码可以在HTTP上正常工作,但在HTTPS上从NSJSONObjectserialization返回(null)值时失败 我尝试将接收到的数据转换为字符串,结果显示它作为有效的JSON登录。我也确认了这一点。一切都好。HTTPS证书是有效的,但我也尝试了对无效证书实施回调,没有任何更改 完全相同的配置在HTTP上非常有效,如果我进入浏览器并输入相同的帖子(我甚至尝试删除帖子,让服务器返回JSON,不管您输入什么),我也会得到有效的JSON 我尝试将接收到的数据转换为数组,并获取数组中的

我有一些代码可以在HTTP上正常工作,但在HTTPS上从NSJSONObjectserialization返回(null)值时失败

我尝试将接收到的数据转换为字符串,结果显示它作为有效的JSON登录。我也确认了这一点。一切都好。HTTPS证书是有效的,但我也尝试了对无效证书实施回调,没有任何更改

完全相同的配置在HTTP上非常有效,如果我进入浏览器并输入相同的帖子(我甚至尝试删除帖子,让服务器返回JSON,不管您输入什么),我也会得到有效的JSON

我尝试将接收到的数据转换为数组,并获取数组中的第一个对象,但也没有成功。我试着在不同的配置(应用程序/json)中更改http头,等等。没有骰子

错误代码为3840。据我所知,这个错误意味着JSON无效。这怎么可能?上面说第三个角色不好

有什么建议吗?我在谷歌上搜索了尽可能多的内容,但我能找到的只是“https和http应该以相同的方式工作”或多或少

证书由RapidSSL验证

NSDictionary* json = [NSJSONSerialization JSONObjectWithData:_responseDataNews options:kNilOptions error:&error];
\u responsedTanews
是由didReceiveData委托填充的对象,而此配置在HTTP上工作。我到底做错了什么?这快把我逼疯了

确切的错误是:

Error Domain=NSCOCAERRORDOMAIN Code=3840“操作无法完成。(Cocoa错误3840)。“(JSON文本未以数组或对象开头,允许未设置片段的选项。)UserInfo=0xbb2cde0{NSDebugDescription=JSON文本未以数组或对象开头,允许未设置片段的选项。}

如果启用片段选项:

Error Domain=NSCOCAERRORDOMAIN Code=3840“该操作无法完成。(可可错误3840)。”(字符3周围的值无效。)UserInfo=0xb939ab0{NSDEBUGSCRIPTION=字符3周围的值无效。}

JSON看起来像:
{“r”:1,“n”:“Text here”}
不,“文本”不包含时髦的字符。这是我正在测试的实际JSON值

编辑:数据对象的NSLog显示:

efbbbfef bbbfefbb bfefbbbf efbbbf7b 22687322 3a5b7b22 75736572 223a2254 65737465 73656e22 2c227363 6f726522 3a223233 3032227d 5d7d EFBBBFEFBBBFBFBFBFBFBFBF7B 22687322 3a5b7b22 75736572 223a2254 65737465 73656e22 2c227363 6f726522 3A2223233 3032227d 5d7d (使用JSON:
{“hs”:[{“user”:“Testesen”,“score”:“2302”}]}


编辑:。。。好的,事实证明,现在它也不能在HTTP上工作,所以它一定是在更改了SSL设置或服务器上的某个东西后损坏的!?HTTP返回完全相同的(无效)数据对象:(

好的-结果证明这与HTTPS无关

由于某些原因,我无法真正理解,我的php脚本在我重新构造后,只使用1.php文件作为无效字符的前缀,该文件响应POST,包括所有其他.php文件,并根据您发布的内容返回相应的函数-当然,我试图让它只调用其中一个函数而不发布任何内容,所以我可以从故障排除中排除POST错误

在我更改了它之后,我请求特定的文件,这取决于我想在服务器上执行的操作-获取新闻、获取用户、获取分数等等,比如server.com/getscore.php,而不仅仅是server.com+POST data来获取分数,它可以正常工作,JSON响应是有效的


我真的不知道.php是怎么搞砸的,但出了点问题。我尝试在记事本++中启用“显示所有字符”,但我在任何地方都看不到任何奇怪的东西。我确保所有的.php文件也用UTF-8编码。

您报告字符串的
NSData
是:

<efbbbfef bbbfefbb bfefbbbf efbbbf7b 22687322 3a5b7b22 75736572 223a2254 65737465 73656e22 2c227363 6f726522 3a223233 3032227d 5d7d> ef bb bf是UTF-8字符串的缩写。但是如果你有一个BOM表,你应该只有一个,并且有五个

如果以编程方式创建此响应,则可能会有某个服务器函数多次调用,该函数会重复添加此BOM表。BOM表只应出现一次(如果有),并且多次出现表明服务器代码中存在问题


如果手动创建此文件,则可能需要编辑十六进制数据。请使用任何十六进制编辑器来修复此问题。例如,如果要使用Xcode编辑此文件,可以将其添加到Xcode项目中,然后右键单击该文件并选择“打开为…”-“十六进制”.

您是否尝试过使用
NSJSONReadingMutableContainers
作为
JSONObjectWithData
方法的
options
参数?您的数据在第3位带有无效字符,与您在那里编写的数据相同?如果没有,您可以发布准确的数据吗?准确的数据例如:{“hs”:[{“user”:“Testesen”、“score”:“2302”}]}或我之前发布的内容-我在原始帖子中也尝试了这一点。也许您可以使用您收到的
NSLog
实际
NSData
对象更新您的问题(因此,我们可以看到十六进制表示形式,并确保在将其转换为字符串时没有丢失任何奇怪的内容)。例如,可能有一个或奇怪的字符串编码。Rob,这也是我所能想到的。如何发布对象?NSLog(_responseData)你说得对。它原来来自于我在PHP中使用的一个switch/case语句,不知怎么搞砸了。我不明白是怎么回事,但在尝试了另一个解决方案后,它起了作用。