play.libs.WS.WSRequestHolder.get()切断了部分请求?

时间:2014-01-12 00:19:07

标签: java web-services playframework get playframework-2.2

我的程序应该调用“https://somepath.com/terminallocation/?msisdn=number”,但是看来后面的所有内容都被切断了。我花了最后3个小时就完成了这项工作,我只有有限的尝试次数。如果有人能做的话会很好帮助

public static play.libs.F.Promise<Result> locationControllerGET(
        String number) {

    String feedUrl = "https://somepath.com/terminallocation/?msisdn="
            + number;
    Logger.debug(WS.url(feedUrl)
            .setAuth("user", "password", com.ning.http.client.Realm.AuthScheme.BASIC).getUrl().toString());

    final play.libs.F.Promise<Result> resultPromise = WS.url(feedUrl)
            .setAuth("48509237274", "Y7A7HNM3EFF3LF", com.ning.http.client.Realm.AuthScheme.BASIC).get()
            .map(new Function<WS.Response, Result>() {
                        return ok("");                  
            });
    return resultPromise;
}

记录器的控制台输出:

[debug] application - https://somepath.com/terminallocation/?msisdn=number

我还使用Logger.debug.debuf(deedUrl)进行了检查,这是正确的。

1 个答案:

答案 0 :(得分:2)

?之后的部分被视为“查询参数”,需要作为WSRequestHolder的Builder模式的一部分单独指定。因此,使用WS.WSRequestHolder API中的setQueryParameter(String name, String value)方法:

String feedUrl = "https://somepath.com/terminallocation/";

final play.libs.F.Promise<Result> resultPromise = WS.url(feedUrl)
        .setQueryParameter("msisdn", number)
        .setAuth("48509237274", "Y7A7HNM3EFF3LF", com.ning.http.client.Realm.AuthScheme.BASIC).get()
        .map(new Function<WS.Response, Result>() {
                    return ok("");                  
});