我有一个我想用来获取数据的 API。为了获取数据,我必须以 XML 格式发送请求,并且响应将以 XML 格式发送。有没有人有任何示例如何使用 Java 发送请求以及如何在 Java 中解码响应。
问问题
5575 次
2 回答
2
好吧,我有你想要的......但我会要求你使用以下 API......
JAXP
和JAXB
Castor
-下面的代码片段方法接受url
网络服务器和xmlQuery
-我已使用NameValuePair
发送 XML 请求
-请用客户端替换,我已经使用它需要自定义证书才能访问此站点。`MySSLSocketFactory.getNewHttpClient();
Http
这是我的项目中的代码,它发送一个 XML req 并返回一个 XML resp:
public String postData(String url, String xmlQuery) {
final String urlStr = url;
final String xmlStr = xmlQuery;
final StringBuilder sb = new StringBuilder();
Thread t1 = new Thread(new Runnable() {
public void run() {
HttpClient httpclient = MySSLSocketFactory.getNewHttpClient();
HttpPost httppost = new HttpPost(urlStr);
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
1);
nameValuePairs.add(new BasicNameValuePair("xml", xmlStr));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
Log.d("Vivek", response.toString());
HttpEntity entity = response.getEntity();
InputStream i = entity.getContent();
Log.d("Vivek", i.toString());
InputStreamReader isr = new InputStreamReader(i);
BufferedReader br = new BufferedReader(isr);
String s = null;
while ((s = br.readLine()) != null) {
Log.d("YumZing", s);
sb.append(s);
}
Log.d("Check Now", sb + "");
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Getting from Post Data Method " + sb.toString());
return sb.toString();
}
于 2012-10-01T17:28:35.333 回答
0
看看下面的讨论,如何在 java 中发送 HTTP 请求? 对于 xml 中的响应,请确保将 mime-type 设置为 application/xml。希望这能回答你的问题。
于 2012-10-01T17:20:24.590 回答