Android - 使用 HttpURLConnection 到 POST XML 数据
Android - Using HttpURLConnection to POST XML data
我 运行 陷入了困境,需要一点帮助(求求你)!
我对 Android 开发(以及一般编码)还很陌生。基本上我需要使用 HttpURLConnection POST XML 数据到 URL 但无法让它工作。我的应用程序从 GET 请求读取和传递 XML 数据,但发现 POST 部分很困难。
我看过创建一个 NameValuePair 数组,但不确定如何使用我需要的 XML 结构来创建 post。
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 创建一个字符串会更好吗?
谢谢!
I'm not sure if I'm understanding NamedValuePair right. Would it be better to create a string for my XML data and POST this way instead?
你的 post 好像被截断了,但是从你展示的内容来看,你所做的并不是 posting XML 而是添加查询参数。
将您的 XML 转换为编码字符串,然后将其写入您从 conn.getOutputStream() 获得的输出流。
这是一个类似的例子:
您可以将 "query" 替换为您的 XML 字符串。
是的,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();
}
我 运行 陷入了困境,需要一点帮助(求求你)!
我对 Android 开发(以及一般编码)还很陌生。基本上我需要使用 HttpURLConnection POST XML 数据到 URL 但无法让它工作。我的应用程序从 GET 请求读取和传递 XML 数据,但发现 POST 部分很困难。
我看过创建一个 NameValuePair 数组,但不确定如何使用我需要的 XML 结构来创建 post。
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 创建一个字符串会更好吗?
谢谢!
I'm not sure if I'm understanding NamedValuePair right. Would it be better to create a string for my XML data and POST this way instead?
你的 post 好像被截断了,但是从你展示的内容来看,你所做的并不是 posting XML 而是添加查询参数。
将您的 XML 转换为编码字符串,然后将其写入您从 conn.getOutputStream() 获得的输出流。
这是一个类似的例子:
您可以将 "query" 替换为您的 XML 字符串。
是的,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();
}