commons httpclient - Adding query string parameters to GET/POST request

前端 未结 6 2177
情深已故
情深已故 2020-12-04 23:38

I am using commons HttpClient to make an http call to a Spring servlet. I need to add a few parameters in the query string. So I do the following:

HttpReques         


        
6条回答
  •  醉梦人生
    2020-12-05 00:11

    This approach is ok but will not work for when you get params dynamically , sometimes 1, 2, 3 or more, just like a SOLR search query (for example)

    Here is a more flexible solution. Crude but can be refined.

    public static void main(String[] args) {
    
        String host = "localhost";
        String port = "9093";
    
        String param = "/10-2014.01?description=cars&verbose=true&hl=true&hl.simple.pre=&hl.simple.post=";
        String[] wholeString = param.split("\\?");
        String theQueryString = wholeString.length > 1 ? wholeString[1] : "";
    
        String SolrUrl = "http://" + host + ":" + port + "/mypublish-services/carclassifications/" + "loc";
    
        GetMethod method = new GetMethod(SolrUrl );
    
        if (theQueryString.equalsIgnoreCase("")) {
            method.setQueryString(new NameValuePair[]{
            });
        } else {
            String[] paramKeyValuesArray = theQueryString.split("&");
            List list = Arrays.asList(paramKeyValuesArray);
            List nvPairList = new ArrayList();
            for (String s : list) {
                String[] nvPair = s.split("=");
                String theKey = nvPair[0];
                String theValue = nvPair[1];
                NameValuePair nameValuePair = new NameValuePair(theKey, theValue);
                nvPairList.add(nameValuePair);
            }
            NameValuePair[] nvPairArray = new NameValuePair[nvPairList.size()];
            nvPairList.toArray(nvPairArray);
            method.setQueryString(nvPairArray);       // Encoding is taken care of here by setQueryString
    
        }
    }
    

提交回复
热议问题