java HTTP:差异请求属性和POST参数
我目前正试图通过一个使用HttpURLConnection类的安卓应用程序向一个简单的PHP Web服务发送一个POST方法。多个教程使用缓冲编写器类将参数写入http正文,但HttpURLConnection也有一个setRequestProperty()方法,该方法向连接添加一个键值对。显然,它们并不是用于相同的目的,但有什么区别(我也检查了谷歌,但没有找到答案)
你可以在下面搜索框中键入要查询的问题!
我目前正试图通过一个使用HttpURLConnection类的安卓应用程序向一个简单的PHP Web服务发送一个POST方法。多个教程使用缓冲编写器类将参数写入http正文,但HttpURLConnection也有一个setRequestProperty()方法,该方法向连接添加一个键值对。显然,它们并不是用于相同的目的,但有什么区别(我也检查了谷歌,但没有找到答案)
# 1 楼答案
您向服务器发出请求的方式太旧了。 试着使用一些库来减少很多不必要的代码,比如加载到缓冲区读取器和转换过程,我建议你使用volley库,请阅读有关它的谷歌文档。 您可以创建一个自定义JSONObjectReuqest并重写getParams方法,也可以在构造函数中将它们作为JSONObject提供给请求体
就像这样(我编辑了你的代码):
# 2 楼答案
setRequestProperty()
用于设置HTTP头(如Content-Type
):但要设置POST参数,需要对它们进行url编码,并将结果字符串(转换为字节流)写入从
HttpURLConnection
实例获得的OutputStream
例如,要发送值为
1
的a
和值为2
的b
作为POST参数,可以执行以下操作:这里,
conn
是HttpURLConnection
的一个实例