How do I add query parameters to a GetMethod (using Java commons-httpclient)?

前端 未结 3 755
傲寒
傲寒 2020-12-08 19:14

Using Apache\'s commons-httpclient for Java, what\'s the best way to add query parameters to a GetMethod instance? If I\'m using PostMethod, it\'s very straightforward:

相关标签:
3条回答
  • 2020-12-08 20:08

    It's not just a matter of personal preference. The pertinent issue here is URL-encoding your parameter values, so that the values won't get corrupted or misinterpreted as extra delimiters, etc.

    As always, it is best to read the API documentation in detail: HttpClient API Documentation

    Reading this, you can see that setQueryString(String) will NOT URL-encode or delimit your parameters & values, whereas setQueryString(NameValuePair[]) will automatically URL-encode and delimit your parameter names and values. This is the best method whenever you are using dynamic data, because it might contain ampersands, equal signs, etc.

    0 讨论(0)
  • 2020-12-08 20:10

    Try it this way:

        URIBuilder builder = new URIBuilder("https://graph.facebook.com/oauth/access_token")
                .addParameter("client_id", application.getKey())
                .addParameter("client_secret", application.getSecret())
                .addParameter("redirect_uri", callbackURL)
                .addParameter("code", code);
    
        HttpPost method = new HttpPost(builder.build());
    
    0 讨论(0)
  • 2020-12-08 20:12

    Post methods have post parameters, but get methods do not.

    Query parameters are embedded in the URL. The current version of HttpClient accepts a string in the constructor. If you wanted to add the key, value pair above, you could use:

    String url = "http://www.example.com/page?key=value";
    GetMethod method = new GetMethod(url);
    

    A good starting tutorial can be found on the Apache Jakarta Commons page.

    Update: As suggested in the comment, NameValuePair works.

    GetMethod method = new GetMethod("example.com/page"); 
    method.setQueryString(new NameValuePair[] { 
        new NameValuePair("key", "value") 
    }); 
    
    0 讨论(0)
提交回复
热议问题