我正在寻找有关如何在我的Android应用程序中将数据发布到Web服务的一些指导.不幸的是,这是一个学校项目,所以我无法使用外部库.
Web服务具有基本URL,例如:
http://example.com/service/create
Run Code Online (Sandbox Code Playgroud)
并采用以下格式的两个变量:
username = "user1"
locationname = "location1"
Run Code Online (Sandbox Code Playgroud)
Web服务是RESTful并使用XML结构,如果这有所不同.从我的研究中我了解到我应该使用URLconnection而不是弃用的HTTPconnection,但我找不到我要找的例子.
这是我的尝试,目前无效:
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toPost test = new toPost();
text.execute();
}
private class toPost extends AsyncTask<URL, Void, String> {
@Override
protected String doInBackground(URL... params) {
HttpURLConnection conn = null;
try {
URL url = new URL("http://example.com/service");
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
String body = "username=user1&locationname=location1";
OutputStream output = new BufferedOutputStream(conn.getOutputStream());
output.write(body.getBytes());
output.flush();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
conn.disconnect();
}
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 0
是的,您应该使用 URLConnection 来发出请求。
您可以将 xml 数据作为有效负载发送。
请参阅Android - 使用 HttpURLConnection 来 POST XML 数据
URL url = new URL(url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
try {
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
String body = "<xml...</xml>";
OutputStream output = new BufferedOutputStream(conn.getOutputStream());
output.write(body.getBytes());
output.flush();
} finally {
conn.disconnect();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19203 次 |
| 最近记录: |