Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP:差异请求属性和POST参数_Java_Android_Http_Httpurlconnection - Fatal编程技术网

Java HTTP:差异请求属性和POST参数

Java HTTP:差异请求属性和POST参数,java,android,http,httpurlconnection,Java,Android,Http,Httpurlconnection,我目前正试图通过一个使用HttpURLConnection类的android应用程序向一个简单的PHP Web服务发送一个POST方法。多个教程使用buffered writer类将参数写入http正文,但HttpURLConnection也有一个setRequestProperty方法,该方法向连接添加一个键值对。显然,它们不是用于相同的目的,但有什么区别?我也检查了谷歌,但没有找到答案?setRequestProperty用于设置HTTP头,如内容类型: 但要设置POST参数,您需要对它们进

我目前正试图通过一个使用HttpURLConnection类的android应用程序向一个简单的PHP Web服务发送一个POST方法。多个教程使用buffered writer类将参数写入http正文,但HttpURLConnection也有一个setRequestProperty方法,该方法向连接添加一个键值对。显然,它们不是用于相同的目的,但有什么区别?我也检查了谷歌,但没有找到答案?

setRequestProperty用于设置HTTP头,如内容类型:

但要设置POST参数,您需要对它们进行url编码,并将转换为字节流的结果字符串写入从HttpURLConnection实例获得的OutputStream

例如,要发送值为1的a和值为2的b作为POST参数,可以执行以下操作:

final String urlEncodedString = "a=1&b=2";
final byte[] bytesToWrite = urlEncodedString.getBytes(StandardCharsets.UTF_8);
conn.getOutputStream().write(bytesToWrite);
这里,conn是HttpURLConnection的一个实例。

setRequestProperty用于设置HTTP头,如内容类型:

但要设置POST参数,您需要对它们进行url编码,并将转换为字节流的结果字符串写入从HttpURLConnection实例获得的OutputStream

例如,要发送值为1的a和值为2的b作为POST参数,可以执行以下操作:

final String urlEncodedString = "a=1&b=2";
final byte[] bytesToWrite = urlEncodedString.getBytes(StandardCharsets.UTF_8);
conn.getOutputStream().write(bytesToWrite);

这里,conn是HttpURLConnection的一个实例。

您使用的向服务器发出请求的方式太旧了。 尝试使用一些库来减少许多不必要的代码,比如加载到缓冲区读取器和转换过程,我建议您使用volley库,请阅读有关它的google文档。 您可以创建一个自定义JSONObjectReuqest并重写getParams方法,也可以在构造函数中将它们作为JSONObject提供给请求体

像这样我编辑了你的代码:

JSONObject obj=新的JSONObject; obj.putkey,值; obj.putkey2,值2; //添加您想要的任何内容 RequestQueue=MyVolley.getRequestQueue; JsonObjectRequest jsObjRequest=新的JsonObjectRequestRequest.Method.POST,SPHERE_URL,obj, 新的响应。侦听器{ @凌驾 公共无效onResponseJSONObject响应{ System.out.printlnresponse; hideProgressDialog; } }, 新的Response.ErrorListener{ @凌驾 公共无效OnErrorResponseEvolleyError错误{ hideProgressDialog; } };
queue.addjsObjRequest 您使用的向服务器发出请求的方式太旧。 尝试使用一些库来减少许多不必要的代码,比如加载到缓冲区读取器和转换过程,我建议您使用volley库,请阅读有关它的google文档。 您可以创建一个自定义JSONObjectReuqest并重写getParams方法,也可以在构造函数中将它们作为JSONObject提供给请求体

像这样我编辑了你的代码:

JSONObject obj=新的JSONObject; obj.putkey,值; obj.putkey2,值2; //添加您想要的任何内容 RequestQueue=MyVolley.getRequestQueue; JsonObjectRequest jsObjRequest=新的JsonObjectRequestRequest.Method.POST,SPHERE_URL,obj, 新的响应。侦听器{ @凌驾 公共无效onResponseJSONObject响应{ System.out.printlnresponse; hideProgressDialog; } }, 新的Response.ErrorListener{ @凌驾 公共无效OnErrorResponseEvolleyError错误{ hideProgressDialog; } };
queue.addjsObjRequest;谢谢,这就是我想知道的:谢谢,这就是我想知道的:我已经读过关于排球图书馆的书,但是为了学习,我想用老式的方式去做。不过谢谢你的建议:我已经读过关于截击图书馆的书,但是为了学习,我想用老式的方式来做。不过,感谢您的建议: