我正在尝试将用户状态更新发布到Goodreads。
大多数情况下,我的请求返回200 OK,什么也不做。但是,它不时地返回创建的201并更新状态。当它正常工作时,这总是我第一次尝试在iOS模拟器中运行这个应用程序之后进行调用。后来的电话根本不起作用。
我不认为问题在于API本身,因为官方的Goodreads应用程序使用的是相同的调用,而且它总是有效的。
他们的API以参数中包含括号的调用出现问题而闻名,但我可以进行其他包含括号的调用,它们工作得很好,问题就在这里。
我正在使用OAuthSwift,这是我的代码:
oAuth.client.post(
"http://www.goodreads.com/user_status",//.xml",//?user_status[book_id]=6366035&user_status[page]=168",
parameters: ["user_status[page]" : 168, "user_status[book_id]" : 6366035, "format" : "xml"],
//headers: ["Content-Type" : "application/x-www-form-urlencoded"],
success: {
data, response in
print("")
print(response)
},
failure: {
error in
print("")
print(error)
}
)(注释掉的部分是我尝试过的不成功的替代品。)
我正在打印得到签名的基字符串,显然,除了nonce和timestamp之外,工作调用和无效调用看起来都是一样的。
在标头中还包括oauth_signature,它每次都会更改,有时还会包含由OAuthSwift编码的字符,这样就可以解释调用在某些时候才能工作(只有在签名不包含特定字符时才能工作)…但是我也在打印标头,我没有看到任何模式,也没有看到在调用的头和调用的头之间有任何明显的区别。
所以现在我不知道该测试什么了,…我正在检查基本字符串和标头,以查找有效的调用和不工作的调用,它们看起来都是相同的…有人能想出别的什么事情来改变我的电话吗我应该检查一下吗?我不知道导致这种情况的原因,也不知道如何调试它。
提前谢谢你,
丹尼尔
编辑:非常奇怪的…我用request客户端Paw和Chrome的邮递员扩展来尝试我的请求。如果我使用https,我在第一个呼叫中得到404,第二个调用得到201,第三个调用得到404,第四个呼叫得到201,依此类推。它每隔一次工作一次。它工作的时间--如果我使用http或https并不重要,只要之前有一个失败的https请求,它就能工作。
因此,我尝试在我的应用程序中做同样的事情:我添加了两个https调用,一个接一个…。在我的应用程序中,它们总是返回404。
因此,邮递员、Paw和OAuthSwift处理这些请求的方式似乎有所不同。我不知道这些客户…之间有什么区别签名基字符串似乎都是相同的,标头也是…。那么他们之间还能有什么变化呢?
发布于 2016-03-06 22:41:23
在较新版本的Xcode中,您只能与HTTPS服务器通信。我希望Google支持这一点,这样你就可以更改URL了。或者你可以编辑你的Info.plist文件。
应用程序传输安全设置>允许任意加载>是
https://stackoverflow.com/questions/35833063
复制相似问题