データをフェッチするために使用したい API があります。データをフェッチするには、リクエストを XML 形式で送信する必要があり、レスポンスは XML で送信されます。Javaを使用してリクエストを送信する方法と、Javaでレスポンスをデコードする方法の例はありますか?
5575 次
2 に答える
2
さて、私はあなたが望んでいたものを手に入れました...しかし、次のAPIを使用するようお願いします...
JAXP
とJAXB
Castor
-以下のコード スニペット メソッドはurl
、Web サーバーの と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 に答える