文章来自:http://www.codeif.com/topic/389
转载请保留原文地址
使用java,但不使用HttpClient等第三方jar包的情况下发送http请求,有时直接在域名后带参数发送请求时会发生400错误,大家可以测试下如下代码
URL url = new URL("http://www.codeif.com?a=3");
InputStream in = url.openStream();
BufferedReader bin = new BufferedReader(new InputStreamReader(in, "utf-8"));
String s = null;
while((s=bin.readLine()) != null){
System.out.println(s);
}
bin.close();
补充:如果你是代理上网,可以参考:java使用代理发送http请求
上面是不是会报400错误,而如果直接访问,不带参数,如下
URL url = new URL("http://www.codeif.com");
则正常返回数据
可是我们访问中需要有参数怎么办呢?
其实解决方案也很简单,在域名后加上/
http://www.codeif.com?a=3
改为
http://www.codeif.com/?a=3
其实之所以我们在浏览器中能够使用http://www.codeif.com?a=3这种形式直接访问,不是说这种方式就是可以访问的,而且浏览器帮你加了/,同样我们的HttpClient包也会帮我们加这个/
这样我们在程序中只需稍微处理下url地址,在后面价格/就可以了
我们写一个函数处理下面的情况
http://www.codeif.com –> http://www.codeif.com
http://www.codeif.com?a=1 –> http://www.codeif.com/?a=1
http://www.codeif.com/topic/360?a=1 不变
可以看出在//后没有/的时候
没有问号的时候在最后加/
有问号的时候在问号前加/
在使用java发送http请求前,可以使用下面的函数对url进行处理
/**
* 对url进行处理,将url域名后补充/
* @param url
* @return
*/
private String handleUrl(String url) {
String result = url;
int beginIndex = result.indexOf("//");
if (beginIndex != -1) {
int endIndex = result.indexOf("/", beginIndex + 2);
if (endIndex == -1) {
int questionIndex = result.indexOf("?");
if(questionIndex==-1){
result += "/";
}else {
result = result.replaceFirst("/?[?]", "/?");
}
}
}
return result;
}
文章来自:http://www.codeif.com/topic/389
转载请保留原文地址
分享到:
相关推荐
总的来说,这篇文章可能涵盖了如何使用Java内置的URLConnection类发送HTTP请求,包括设置请求头、写入请求体、读取响应,并可能涉及了对源代码的分析以及在实际开发环境中(如Spring MVC项目)的应用。
本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用HttpURLConnection类可以实现Http和Https请求,但是对于...
4. **发送请求体**:对于POST请求,需要写入请求体,可以通过`getOutputStream()`获取输出流并写入数据。 ```java try(OutputStream os = connection.getOutputStream()) { os.write(jsonData.getBytes...
1. `java.net.URL`和`HttpURLConnection`类的使用。 2. GET和POST请求的实现。 3. 请求头的设置和使用。 4. 查询参数的处理。 5. 响应内容的读取和编码处理。 6. 连接的关闭和资源管理。 7. 可能会用到的第三方库,...
在Java中,`HttpURLConnection`类是发送HTTP请求最基础且直接的方式。下面将详细解析如何利用`HttpURLConnection`来构建并发送一个包含JSON数据的POST请求: ```java import java.io.BufferedReader; import java....
在Java编程语言中,发送HTTP请求是常见的网络通信任务,主要用到的是`java.net.URL`和`java.net.HttpURLConnection`这两个核心类。本篇将详细介绍如何使用Java原生API实现简单的HTTP请求。 首先,我们需要了解HTTP...
以上就是使用Java HTTP发送XML报文的基本步骤。在实际应用中,可能还需要考虑错误处理、重试机制、超时设置等高级特性。同时,对于大型项目,可能需要使用更高级的HTTP客户端库,如Apache HttpClient或OkHttp,它们...
3. **创建HttpURLConnection对象**:使用`java.net.URL`类打开与目标服务器的连接,并通过`openConnection()`方法获取HttpURLConnection对象。然后,将Socket工厂设置为HTTPS连接的套接字工厂。 ```java URL url = ...
这里我们将深入探讨如何使用Java发送GET和POST请求,以及处理JSON数据。 首先,让我们关注GET请求。GET请求主要用于从服务器获取资源,其参数通常包含在URL中。在Java中,可以使用`HttpURLConnection`类或者第三方...
- **设置HTTP请求**:使用`URL`对象指向目标服务器的URL,然后通过`openConnection()`方法获取`HttpURLConnection`实例。设置`setDoOutput(true)`表示将有输出流,即向服务器发送数据;`setRequestMethod("POST")`...
### JAVA发送HttpClient请求及接收请求结果过程 #### 一、概述 在Java开发过程中,经常需要与外部系统进行HTTP通信,比如发送POST或GET请求来获取数据或提交数据。Apache HttpClient是一个强大的HTTP客户端库,提供...
- **执行请求**:使用HttpClient的`execute()`方法发送请求,并获取`HttpResponse`对象。 - **处理响应**:检查响应状态码,通常200表示成功。然后,通过`EntityUtils`类的`toString()`或`getContent()`方法获取...
在Java编程中,HttpClient是一个非常重要的工具库,用于发送HTTP请求。这个压缩包可能包含了实现HTTP GET和POST请求所需的jar包以及示例代码,帮助开发者理解如何使用HttpClient进行网络通信。下面将详细介绍...
4. **执行请求**:使用`execute`方法发送请求,并获取`HttpResponse`对象。 ```java HttpResponse response = httpClient.execute(httpGet); ``` 5. **处理响应**:从`HttpResponse`中读取状态码、响应头和响应体...
在Java编程中,发送HTTP请求并获取状态码是常见的网络通信任务。HTTP状态码是服务器对客户端请求的响应,它提供了关于请求是否成功、需要进一步操作还是存在错误等信息。以下是一个简单的Java实例,展示了如何实现这...
- 使用`java.net.URL`和`java.net.HttpURLConnection`类创建GET请求。首先,构造URL对象,然后打开连接并设置请求方法为GET。如果需要携带Session信息,通常会将Session ID作为Cookie放入请求头中。 ```java URL ...
发送请求后,可以从响应中获取信息。首先检查响应码: ```java int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 处理成功 } else { // 处理错误 } ...
`sendGet` 方法的工作原理是将参数拼接在 URL 后面,形成一个完整的 GET 请求 URL,然后通过 `HttpURLConnection` 连接到该 URL 并发送请求。 **发送 POST 请求** POST 请求通常用于向服务器提交数据,例如表单数据...
在本实例中,我们将深入探讨如何使用HttpClient来发送请求以及处理返回的数据。 首先,让我们了解HttpClient的基本用法。Apache HttpClient库提供了一个`CloseableHttpClient`接口,它是执行HTTP请求的主要入口点。...
在Java中,还可以使用`HttpURLConnection`类进行更复杂的HTTP操作,比如发送POST请求、设置请求头等。`HttpURLConnection`是`URLConnection`的子类,专门处理HTTP协议。 例如,发送一个POST请求: ```java ...