7

を返すサービスでGETを呼び出す必要がありますtext/xml

エンドポイントは次のようなものです。

http://service.com/rest.asp?param1=34&param2=88&param3=foo

このURLをブラウザ(またはUIツール)で直接ヒットすると、すべて問題ありません。返答があります。

今、私はCXF WebClient次のようなコードを使用して結果をフェッチするために使用しようとしています:

String path = "rest.asp?param1=34&param2=88&param3=foo";

webClient.path(path)
    .type(MediaType.APPLICATION_JSON)
    .accept(MediaType.TEXT_XML_TYPE)
    .get(Response.class);

コードをデバッグしていたところ、送信されるリクエストがURLエンコードされており、次のようになっていることがわかりました。

http://service.com/rest.asp%3Fparam1=34%26param2=88%26param3=foo

さて、問題は、サーバーがエンコードされたものでこの要求を理解していないように見えることです。404をスローします。ブラウザでこのエンコードされたURLを押すと、404になります。

応答を正常に取得できるようにするには(またはWebClientにURLをエンコードさせないようにするには)どうすればよいですか?

4

2 に答える 2

10

クエリメソッドを使用してパラメータを指定します。

String path = "rest.asp";
webClient.path(path)
    .type(MediaType.APPLICATION_JSON)
    .accept(MediaType.TEXT_XML_TYPE)
    .query("param1","34")
    .query("param2","88")
    .query("param3","foo")
    .get(Response.class);
于 2013-02-08T11:13:31.427 に答える
0

URLをエンコードする必要があります。以下に示すように、URLEncoderクラスを使用してこれを行うことができます。

ラインを交換してください

String path = "rest.asp?param1=34&param2=88&param3=foo";

String path = URLEncoder.encode("rest.asp?param1=34&param2=88&param3=foo");
于 2013-02-08T11:12:22.600 に答える