使用WebTarget时指定原始查询字符串

时间:2018-10-30 14:49:19

标签: java api groovy javax.ws.rs

我正在处理一个大型现有项目,该项目利用javax.ws.rs.client.WebTarget与RESTful API进行通信。该API是由第三方开发的,我对此无能为力。我需要以以下格式发出请求:

https://end.point.url/endpoint/id?data

不幸的是,我不知道如何使用WebTarget指定这样的请求。我尝试使用path("endpoint/id?data"),但这被转换为endpoint/id%3Fdata,我得到404。我尝试使用queryParam指定空值,这使我endpoint/id?data=-导致错误必需的参数data丢失

还有什么其他选择?用其他方法代替WebTarget是不可行的,因为在整个大型项目中都是如此。

1 个答案:

答案 0 :(得分:0)

首先,相关问题:Url encoding issue with Jersey Client

经过大量研究,似乎唯一的方法是在创建WebTarget时指定整个uri,如下所示:

private boolean[] isNumberEvenOrOdd(Condition condition){
    boolean isEven = false;
    boolean isOdd = false;
    boolean[] isNumberEvenOrOdd = new boolean[2];

    if(condition instanceOf ConditionList) {
        for(Condition child : ConditionList.getConditions()){
            if (child instanceOf ConditionList){
                isNumberEvenOrOdd(child);
            }
            else{
                if((Integer)child % 2 == 0) {
                    isEven = true;
                }
                else {
                    isOdd = true;
                }
            }
        }
    }

    isNumberEvenOrOdd[0] = isEven;
    isNumberEvenOrOdd[1] = isOdd;

    return isNumberEvenOrOdd;
}