Java HTTP Request

本文详细介绍了如何使用Java进行HTTP请求的处理,包括POST、GET和PUT等请求方式的具体实现。文章提供了代码示例,展示了如何设置请求头、实体内容及响应处理,并提及了基本认证的设置方法。

POST示例:

private JSONObject postRequest(String url,JSONObject postData){
        JSONObject object = null;
        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost postRequest = new HttpPost(url);
            postRequest.setHeader("Authorization", "Bearer "+accessToken);
            postRequest.setHeader("Content-Type","application/json; charset=UTF-8");
            StringEntity entity = new StringEntity(postData.toString(),"UTF-8");
            postRequest.setEntity(entity);
            HttpResponse response = httpClient.execute(postRequest);
            if(response !=null){
                BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
                String output;
                String objStr = "";
                while ((output = br.readLine()) != null) {
                    objStr+=output;
                }
                object = new JSONObject(objStr);
                if (response.getStatusLine().getStatusCode() == 201) {
                    object.put("statusFlag", Boolean.TRUE);
                }else{
                    object.put("statusFlag", Boolean.FALSE);
                }
            }
            httpClient.getConnectionManager().shutdown();
        }catch (Exception e) {
            e.printStackTrace();
        }
        return object;
    }

GET:

HttpGet putRequest = new HttpGet(url);
            putRequest.setHeader("Authorization", "Bearer "+accessToken);
            putRequest.setHeader("Content-Type","application/json; charset=UTF-8");
            HttpResponse response = httpClient.execute(putRequest);

PUT:

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpPut putRequest = new HttpPut(url);

putRequest.setHeader("Authorization", "Bearer "+accessToken);

putRequest.setHeader("Content-Type","application/json; charset=UTF-8");

StringEntity entity = new StringEntity(postData.toString(),"UTF-8");

putRequest.setEntity(entity);

HttpResponse response = httpClient.execute(putRequest);

Others:

Note:
                String user_pass = username + ":" + password;
                String encoded = Base64.encodeBase64String( user_pass.getBytes() );
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost postRequest = new HttpPost(mtrackUrl);
                postRequest.setHeader("Authorization", "Basic "+encoded);
                postRequest.setHeader("Content-Type","application/xml; charset=UTF-8");
                String xml = XML.toString(referObj);

注:一般来说http请求需要对应设置最大连接数,以及timeout时间等。

转载于:https://my.oschina.net/slightScenery/blog/1865194

### 关于 JavaHttpRequest 的使用 在 Java 中,`HttpRequest` 是 `java.net.http.HttpRequest` 类的一部分,它被设计用于构建和发送 HTTP 请求。以下是有关其基本用法的信息: #### 创建请求对象 可以通过调用静态方法 `HttpRequest.newBuilder()` 来创建一个新的 `HttpRequest.Builder` 实例,并通过链式调用来设置 URL 和其他参数。 ```java import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Example { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://api.github.com")) .header("Accept", "application/json") // 设置头部信息 .GET() // 或者可以替换为 POST(), PUT(), DELETE() 等 .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); // 输出响应体 } } ``` 上述代码展示了如何创建一个简单的 GET 请求并获取 JSON 响应[^1]。 #### 发送不同类型的请求 除了 GET 请求外,还可以轻松地发送其他类型的 HTTP 请求,比如 POST、PUT 和 DELETE。对于这些请求,通常需要提供请求主体数据。下面是一个 POST 请求的例子: ```java HttpRequest postRequest = HttpRequest.newBuilder() .uri(URI.create("https://example.com/resource")) .POST(HttpRequest.BodyPublishers.ofString("{\"key\":\"value\"}")) // 提供JSON字符串作为请求体 .header("Content-Type", "application/json") .build(); HttpResponse<String> postResponse = client.send(postRequest, HttpResponse.BodyHandlers.ofString()); System.out.println(postResponse.statusCode()); // 打印状态码 ``` 这里需要注意的是,在发送 POST 请求时,我们使用了 `BodyPublishers.ofString()` 方法来定义请求的内容。 #### 配置超时和其他选项 如果希望自定义连接或读取操作的时间限制,则可以在客户端级别上配置它们: ```java HttpClient httpClientWithTimeout = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) // 连接超时时长设为10秒 .build(); ``` 此部分未直接提及任何引用材料中的具体细节,而是基于标准库文档进行了扩展说明。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值