HttpURLConnection即使在setDoOutput(true)之后执行get请求,setRequestMethod(“POST”)setRequestProperty(“Content”
这是代码:
String Surl = "http://mysite.com/somefile"; String charset = "UTF-8"; query = String.format("param1=%s¶m2=%s", URLEncoder.encode("param1", charset), URLEncoder.encode("param2", charset)); HttpURLConnection urlConnection = (HttpURLConnection) new URL(Surl + "?" + query).openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoOutput(true); urlConnection.setUseCaches(false); urlConnection.setAllowUserInteraction(false); urlConnection.setRequestProperty("Accept-Charset", charset); urlConnection.setRequestProperty("User-Agent","Android"); urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=" + charset); urlConnection.connect();
以上仍然是GET
请求。 我在服务器上使用PHP,并且能够通过$_GET
变量而不是$_POST
变量访问查询的’name = value’参数
测试2.3.7(设备)。
我错过了什么?
当您在URL中发送参数时,它们将被放入GET变量中。 您应该在请求的POST主体中发布参数,以实现您的目标。 您应该在connect()调用之前添加以下内容并删除“?” +来自url的查询。
urlConnection.setRequestProperty("Content-Length", String.valueOf(query.getBytes().length)); urlConnection.setFixedLengthStreamingMode(query.getBytes().length); OutputStream output = new BufferedOutputStream(urlConnection.getOutputStream()); output.write(query.getBytes()); output.flush(); output.close();
- 画到canvas上
- 如何使用多行文本叠加图像(文本将位于canvas的中心)
- Android蓝牙串口RFCOMM低波特率/慢速传输
- 使用单个连接实例实现Eclipse MQTT Android Client
- 使用AsyncTask进行android网络连接
- Retrofit2将身体贴为Json
- 无法使AlarmManager和多个通知工作
- 桌面java应用程序通过USB复制和传输android数据
- React-native build error Android – java.lang.UnsupportedClassVersionError:com / android / build / gradle / AppPlugin:不支持的major.minor版本52.0