How to use parameters with HttpPost

后端 未结 3 485
借酒劲吻你
借酒劲吻你 2020-11-27 13:54

I am using a RESTfull webservice with this methode:

@POST
@Consumes({\"application/json\"})
@Path(\"create/\")
public void create(String str1, String str2){
         


        
3条回答
  •  囚心锁ツ
    2020-11-27 14:53

    You can also use this approach in case you want to pass some http parameters and send a json request:

    (note: I have added in some extra code just incase it helps any other future readers)

    public void postJsonWithHttpParams() throws URISyntaxException, UnsupportedEncodingException, IOException {
    
        //add the http parameters you wish to pass
        List postParameters = new ArrayList<>();
        postParameters.add(new BasicNameValuePair("param1", "param1_value"));
        postParameters.add(new BasicNameValuePair("param2", "param2_value"));
    
        //Build the server URI together with the parameters you wish to pass
        URIBuilder uriBuilder = new URIBuilder("http://google.ug");
        uriBuilder.addParameters(postParameters);
    
        HttpPost postRequest = new HttpPost(uriBuilder.build());
        postRequest.setHeader("Content-Type", "application/json");
    
        //this is your JSON string you are sending as a request
        String yourJsonString = "{\"str1\":\"a value\",\"str2\":\"another value\"} ";
    
        //pass the json string request in the entity
        HttpEntity entity = new ByteArrayEntity(yourJsonString.getBytes("UTF-8"));
        postRequest.setEntity(entity);
    
        //create a socketfactory in order to use an http connection manager
        PlainConnectionSocketFactory plainSocketFactory = PlainConnectionSocketFactory.getSocketFactory();
        Registry connSocketFactoryRegistry = RegistryBuilder.create()
                .register("http", plainSocketFactory)
                .build();
    
        PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(connSocketFactoryRegistry);
    
        connManager.setMaxTotal(20);
        connManager.setDefaultMaxPerRoute(20);
    
        RequestConfig defaultRequestConfig = RequestConfig.custom()
                .setSocketTimeout(HttpClientPool.connTimeout)
                .setConnectTimeout(HttpClientPool.connTimeout)
                .setConnectionRequestTimeout(HttpClientPool.readTimeout)
                .build();
    
        // Build the http client.
        CloseableHttpClient httpclient = HttpClients.custom()
                .setConnectionManager(connManager)
                .setDefaultRequestConfig(defaultRequestConfig)
                .build();
    
        CloseableHttpResponse response = httpclient.execute(postRequest);
    
        //Read the response
        String responseString = "";
    
        int statusCode = response.getStatusLine().getStatusCode();
        String message = response.getStatusLine().getReasonPhrase();
    
        HttpEntity responseHttpEntity = response.getEntity();
    
        InputStream content = responseHttpEntity.getContent();
    
        BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
        String line;
    
        while ((line = buffer.readLine()) != null) {
            responseString += line;
        }
    
        //release all resources held by the responseHttpEntity
        EntityUtils.consume(responseHttpEntity);
    
        //close the stream
        response.close();
    
        // Close the connection manager.
        connManager.close();
    }
    

提交回复
热议问题