我一直在寻找将数据发送到网络表单或网络服务的方法,主要是php服务器,但是对于已弃用的方法有很多答案,我必须发布单个值一个表单,另一个更精心设计的Web服务。 所以有三个问题:
这是我发现的代码,基本上是:
private class PostTask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
HttpURLConnection conn=null;
try {
URL url = new URL(params[0]);
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
//conn.setReadTimeout(10000);
//conn.setConnectTimeout(15000);
//conn.setDoInput(true);
String body = "4";
conn.connect();
OutputStream output = new BufferedOutputStream(conn.getOutputStream());
output.write(body.getBytes());
output.flush();
} catch (Exception e) {
e.printStackTrace();
}finally {
assert conn != null;
conn.disconnect();
}
return true;
}
}
答案 0 :(得分:0)
是可以使用params
将表单中的数据作为网址HttpUrlConnection
传递。
你几乎得到了它
在GET请求中,参数作为URL的一部分发送。
在POST请求中,参数作为请求的主体发送, 在标题之后。
做到这一点的方式:
public void sendForm(String formParam1, String formParam2, String formParam3){
String urlParameters = "param1="+formParam1+"¶m2="+formParam2+"¶m3="+formParam3;
try {
byte[] postData = urlParameters.getBytes( StandardCharsets.UTF_8 );
int postDataLength = postData.length;
String request = "http://sicenet.com.mx/ws/index.php/inicio/editar_clave";
URL url = new URL( request );
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setDoOutput( true );
conn.setInstanceFollowRedirects( false );
conn.setRequestMethod( "POST" );
conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty( "charset", "utf-8");
conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
conn.setUseCaches( false );
try(DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
wr.write( postData );
}
}catch (Exception e){
e.printStackTrace();
}
}
未经测试是否可行。
中找到