我遇到了一些困难,需要一些帮助(请)!
我对Android Dev(以及一般的编码)都很陌生。基本上我需要使用HttpURLConnection将XML数据发布到URL,但无法使其工作。我已经让我的应用程序读取并从GET请求中篡改XML数据,但发现POST部分很困难。
我已经看过创建一个NameValuePair数组,但不知道如何使用我需要发布的XML结构来执行此操作。
XML数据如下所示:
<Sheet>
<Job>jobNumber</Job>
<Task>taskNumber</Task>
<UserID>3</UserID>
<Date>systemDateFormatted</Date>
<Minutes>timeToLog</Minutes>
<Note>userNote</Note>
</Sheet>
到目前为止,我已将此代码用于我的代码。
try {
URL url = new URL(theUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("Sheet", null));
params.add(new BasicNameValuePair("Job", jobNumber));
params.add(new BasicNameValuePair("Task", taskNumber));
params.add(new BasicNameValuePair("UserID", String.valueOf(yourUserID)));
params.add(new BasicNameValuePair("Date", systemDateFormatted));
params.add(new BasicNameValuePair("Minutes", timeElapsed));
params.add(new BasicNameValuePair("UserNote", "Test Note"));
params.add(new BasicNameValuePair("Sheet", null));
我不确定我是否正确理解了NamedValuePair。为我的XML数据创建字符串并以这种方式POST更好吗?
谢谢!
答案 0 :(得分:2)
是的,POST数据作为您请求的有效负载。例如
URL url = new URL(theUrl);
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();
}
答案 1 :(得分:1)
我不确定我是否正确理解了NamedValuePair。为我的XML数据创建字符串并以这种方式POST更好吗?
您的帖子似乎被截断了,但是根据您所展示的内容,您不会发布XML,而是添加查询参数。
将XML转换为编码字符串,然后将其写入从conn.getOutputStream()获得的输出流。
以下是一个类似的例子:https://stackoverflow.com/a/2737455/1197251
您可以使用XML字符串替换“query”。