我正在尝试将值发布到在本地服务器上运行的脚本。我的代码如下:
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
但本地服务器没有响应。我的PHP代码是:
final String data = "poet=nazmul";
//Toast.makeText(getApplicationContext(), "ok", Toast.LENGTH_LONG).show();
StringRequest request = new StringRequest(Request.Method.POST, "http://192.168.1.112:8080/api/post.php?" + data, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(getApplicationContext(), volleyError.toString(), Toast.LENGTH_LONG).show();
}
});
AppController.getInstance().addToRequestQueue(request);
当我直接在网络浏览器中打开网址时,出现此错误:
注意:未定义索引:诗人在C:\ xampp \ htdocs \ api \ post.php上线 2 {&#34; poet&#34;:null}
我该如何解决这个问题?
答案 0 :(得分:1)
由于串联,您正在执行get请求?和+数据。如果您将服务器脚本$ _POST更改为$ _GET并将Request.Method.POST更改为Request.Method.GET,这将有效。
答案 1 :(得分:1)
您使用POST向您的脚本提交数据(在这种情况下并不重要,但如果它正在改变某些内容 - 不是幂等的 - 您必须这样做)。通常情况下,使用POST提交的数据将包含一个与请求一起发送的请求正文,而不是像您在此处使用的URL参数。
两者都很好,但遗憾的是PHP的$_POST
字典只能从消息体中获取值,而不是URL参数($_GET
引用的)。要访问它们,您需要parse the request URI yourself访问$_SERVER['REQUEST_URI']
变量。
如果您永远不会使用此请求更改服务器的状态,则将请求类型更改为GET是合适的。请阅读this question and answers以更深入地了解GET和POST之间的差异以及使用网址参数。
或者,如果您根本不想更改PHP脚本,则需要修改Android代码以在请求正文中发送数据(而不是作为URL参数)。有关这方面的一些方法,请参阅this question。