我正在开发一个android项目,我需要使用post方法将两个xml作为参数发送到服务器(即我想以表单形式发送)。我试图通过使用以下代码发送数据,但它无法正常工作。远程数据库中没有数据。
private void postFormData(List<DataItem> ti,String ex,String getExpensesXml)
{
//Create a new Http Client
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
try
{
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("sync","true"));
nameValuePairs.add(new BasicNameValuePair("tt",ti));
nameValuePairs.add(new BasicNameValuePair("te",ex));
UrlEncodedFormEntity form;
form = new UrlEncodedFormEntity(nameValuePairs,"UTF-8");
httppost.setEntity(form);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String line = EntityUtils.toString(entity);
System.out.println(line);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我无法找到问题所在。如果有人设法找到问题并建议我解决方案,那就太好了。
我还有两个问题? 我在尝试正确的代码吗? 有没有其他方法通过Form发送xml数据到服务器?
提前致谢
答案 0 :(得分:0)
最后我找到了解决方案,我使用以下代码将数据作为from发送到服务器
URL siteUrl;
try {
siteUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) siteUrl
.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
String content1 = "";
Set getkey = param.keySet();
Iterator keyIter = getkey.iterator();
String content = "";
for (int i = 0; keyIter.hasNext(); i++) {
Object key = keyIter.next();
if (i != 0) {
content += "&";
}
content += key + "=" + param.get(key);
System.out.println("Content" + content);
}
System.out.println(content);
out.writeBytes(content.trim());
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String line = "";
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
}
db.close();
}
对于像我这样的人来说,这可能会有所帮助。
答案 1 :(得分:0)
面临同样的问题。但最后设法将数据发布到服务器。您的代码绝对应该是这样的,除非您必须将String
编码为Base64
,然后将其传递给NameValuePair
。在服务器端,您必须从String
解码Base64
。它会工作。如果需要,我可以共享代码。