0

ポストリクエストを使用して残りのWebサービスにアクセスするために、以下のようなhttprequestを構築したいと思います。私はSpring for Android APIを使用してリクエストを生成しました。httpHeader.add メソッドでヘッダーを追加できますが、本文にメッセージを追加することはできません。リクエスト形式は以下の通りです。

<?xml version="1.0" encoding="UTF-8"?>
<root>
<headers>
<messagetype>1</messagetype>
<uniquekey>95C75718-C774-DF4E-0DB4-A7AEF55077AA</uniquekey>
</headers>
<authentication>
<clientname>xxx</clientname>
<servicename>login</servicename>
<username>xxx123</username>
<password>welcome123</password>
</authentication>
</root>

その部分を追加する方法がわかりません。助けてください。

これまでに行ったコードは以下のとおりです

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;


public class Main extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TextView webservice = (TextView) findViewById(R.id.Webservice);

        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.setContentType(MediaType.TEXT_PLAIN);
        requestHeaders.add("messagetype", "1");
        requestHeaders.add("uniquekey", UniqueID.getUUID());
        HttpEntity<String> requestEntity = new HttpEntity<String>(requestHeaders);
        RestTemplate restTemplate = new RestTemplate();
        String url = "http://www.localhost:8080/restwebservice/login";
        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
        String result = responseEntity.getBody();       

        webservice.setText(result);
    }   
}
4

1 に答える 1

0

オブジェクトを作成Messageして RestTemplate に渡す必要があります。RestTemplate詳細については、ドキュメントのセクション 2.6.5 を確認してください。

そこの例はあなたのアプローチとは異なり、postForObject代わりにを使用していることに注意してくださいexchange。それでも を使用したい場合は、使用している をexchange変更して、メッセージの本文を追加できるものを使用する必要があります。本文の XML を手動で構築する必要がありますが、問題なく動作するはずです。一方、適切なメッセージ フォーマッタを使用すると、プレーンな古い Java オブジェクトを渡して、それを適切に XML に自動的にシリアル化することができます。メッセージ フォーマッタには多くのオプションがありますが、Jackson は非常に高速で、十分にサポートされているため (JSON サポートで知られ、XML ではあまり知られていませんが)、Jackson をお勧めします。HttpEntityrequestEntityBasicHttpEntitypostForObject

于 2012-11-06T04:31:16.490 に答える