如何在java中发送带有post参数的简单http post请求

Ars*_*hak 9 java post http request

我需要一个简单的代码示例,使用从表单输入获得的post参数发送http post请求.我找到了Apache HTTPClient,它有很多API和许多复杂的例子,但我找不到一个简单的例子,用输入参数发送http post请求并获得文本响应.

更新:我对Apache HTTPClient v.4.x感兴趣,因为不推荐使用3.x.

Sum*_*sai 15

这是使用Apache HTTPClient API的Http POST示例代码.

import java.io.InputStream;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;


public class PostExample {
    public static void main(String[] args){
        String url = "http://www.google.com";
        InputStream in = null;

        try {
            HttpClient client = new HttpClient();
            PostMethod method = new PostMethod(url);

            //Add any parameter if u want to send it with Post req.
            method.addParameter("p", "apple");

            int statusCode = client.executeMethod(method);

            if (statusCode != -1) {
                in = method.getResponseBodyAsStream();
            }

            System.out.println(in);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我找到了httpClient v.3的罐子,它对我有用,但无论如何我想知道为什么用v.4.1和一般的java发送简单的post请求是如此复杂. (3认同)

Ars*_*hak 3

使用 Apache HttpClient v.4.x的 HTTP POST 请求示例

HttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("param1", param1Value, ContentType.TEXT_PLAIN);
builder.addTextBody("param2", param2Value, ContentType.TEXT_PLAIN);
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
HttpResponse response = httpClient.execute(httpMethod);
Run Code Online (Sandbox Code Playgroud)