我目前在我的Android应用程序中使用HttpClient / HttpResponse调用来传输和接收数据到我的wordpress网站,它工作得很好。我在网站上使用https://wordpress.org/plugins/json-api/插件来处理请求。谷歌正试图逐步淘汰这些http协议,并建议使用凌空进行联网。所以我试图进行转换,但是服务器的查询发布参数会以某种方式被拒绝。
使用此处的代码作为起点: http://code.tutsplus.com/tutorials/creating-a-weather-application-for-mars-using-volley--cms-23812
private String WORDPRESS_API_ENDPOINT = "http://example.com/api/mobileapp/get_posts?id=123&title=test"; // example url with query parameters
CustomJsonRequest request = new CustomJsonRequest
(Request.Method.POST, WORDPRESS_API_ENDPOINT, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
// Do stuff with the returned data
} catch (Exception e) {
txtError(e);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
txtError(error);
}
});
request.setPriority(Request.Priority.HIGH);
helper.add(request);
}
在我的服务器php代码上,我打印$ _SERVER($ _POST和$ _GET为空)全局变量来查看传入请求并显示以下内容(仅显示数组中的相关条目):
array (
'REQUEST_URI' => '/api/mobileapp/get_posts/',
'REQUEST_SCHEME' => 'http',
'CONTEXT_PREFIX' => '',
'REMOTE_PORT' => '13326',
'REDIRECT_URL' => '/api/mobileapp/get_posts/',
'REQUEST_METHOD' => 'GET',
'QUERY_STRING' => ''
)
请注意,Request_uri已从查询参数中删除,但我无法获得所需的正确帖子。我已经尝试了很多调试凌空代码并阅读了很多关于通过凌空正确传递正确的json数据的SO帖子,但没有一种方法可行。 它出现的错误似乎在服务器端的某处,如果我使用不同的api url(例如flickr),我能够成功拨打电话。 与httpclient调用相比,我需要对服务器进行哪些更改才能接收凌空调用。
另外,在调试凌空调用时,我注意到在HurlStack.java下执行请求函数:
int responseCode = connection.getResponseCode();
此时此网址已从“连接”中删除。在执行该行之后立即执行变量。
另外,如果我将网址粘贴到浏览器中,它会向我显示我在阅读查询参数时所期望的数据。
答案 0 :(得分:0)
所以,这只发生在GENYMOTION模拟器上。当我使用内置仿真器和实际设备时,参数会正确传递。
在genymotion上找到另一个面临类似情况的人: Volley request not taking parameters
所以,其他任何人使用凌空并碰巧使用genymotion,你可能需要切换你的模拟器(至少现在)。