HttpURLConnection -1
时间: 2024-01-24 19:07:01 浏览: 82
HttpURLConnection的getResponseCode方法返回-1的原因是因为在url中存在空格。这个问题可以通过将url中的空格替换为空字符串来解决。例如,使用url.replace(" ","")可以去除url中的所有空格。另外,还可以通过设置连接超时时间和读取超时时间来避免连接超时的问题。可以使用setConnectTimeout和setReadTimeout方法设置超时时间,以确保在规定时间内建立连接并读取数据。
相关问题
HttpURLConnection utf-8
HttpURLConnection 是Java标准库中的一个类,用于执行HTTP请求。当涉及到UTF-8编码时,你可以设置其Content-Type和字符集以支持非ASCII字符。
1. 设置Content-Type[^1]:
```java
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
```
2. 发送UTF-8编码的数据:
```java
String data = "key=value&another_key=中文测试"; // 使用UTF-8编码
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.writeBytes(data);
wr.flush(); // 确保数据已发送
```
3. 接收服务器响应时,确保正确解码输入流:
```java
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
```
要确保在发送和接收数据时始终使用UTF-8编码,以避免乱码问题。
HttpURLConnection form-data 上传文件
好的,下面是使用HttpURLConnection进行form-data上传文件的步骤:
1. 创建URL对象,指定上传文件的接口地址。
```
URL url = new URL("http://yourserver/upload");
```
2. 创建HttpURLConnection连接对象,并设置请求方法为POST。
```
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
```
3. 设置请求头,指定Content-Type为multipart/form-data。
```
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundaryxxxxxx");
```
4. 设置请求体,将要上传的文件数据写入请求体中。
```
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes("------WebKitFormBoundaryxxxxxx\r\n");
out.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"\r\n");
out.writeBytes("Content-Type: application/octet-stream\r\n\r\n");
out.write(fileBytes);
out.writeBytes("\r\n------WebKitFormBoundaryxxxxxx--\r\n");
out.flush();
out.close();
```
其中,file是要上传的文件对象,fileBytes是文件的二进制数据。
5. 发送请求并获取响应。
```
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
in.close();
```
以上就是使用HttpURLConnection进行form-data上传文件的步骤,希望能对你有所帮助。
阅读全文