使用Java语言利用SOCKET编程,构建报文并且能发送,能用HTTP解析掉,实现哈尔滨天气预报,并对代码进行解释。
时间: 2024-06-11 17:09:57 浏览: 102
用JAVA实现的天气预报
4星 · 用户满意度95%
以下是一个使用Java语言利用SOCKET编程构建报文并发送的示例代码,可以实现哈尔滨天气预报功能。该代码使用了HTTP协议进行数据传输,并使用了第三方库Gson来解析JSON格式数据。
代码解释:
首先,我们需要导入一些Java标准库和第三方库,包括:
- java.net.*:Java网络编程相关类库
- java.io.*:Java输入输出相关类库
- com.google.gson.*:Google提供的用于解析和生成JSON格式数据的类库
接着,我们定义了一个名为HttpRequest的类,用于构建HTTP请求报文。其中包括了请求方法、请求URL、请求头部信息等。
然后,我们定义了一个名为HttpClient的类,用于发送HTTP请求,并接收HTTP响应。其中包括了建立连接、发送请求、接收响应等步骤。
最后,我们在主函数中创建了一个HttpClient对象,并使用它发送一个请求,获取哈尔滨天气预报数据。我们使用了第三方库Gson来解析JSON格式的响应数据,并将其打印出来。
示例代码如下:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class HttpRequest {
private String method;
private String url;
private Map<String, String> headers;
private String body;
public HttpRequest(String method, String url) {
this.method = method;
this.url = url;
this.headers = new HashMap<>();
this.body = "";
}
public void addHeader(String key, String value) {
this.headers.put(key, value);
}
public void setBody(String body) {
this.body = body;
}
public String send() throws Exception {
URL url = new URL(this.url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod(this.method);
for (String key : this.headers.keySet()) {
conn.setRequestProperty(key, this.headers.get(key));
}
if (this.method.equals("POST")) {
conn.setDoOutput(true);
Writer writer = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
writer.write(this.body);
writer.flush();
writer.close();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
return sb.toString();
}
}
public class HttpClient {
public String get(String url) throws Exception {
HttpRequest request = new HttpRequest("GET", url);
return request.send();
}
public String post(String url, String body) throws Exception {
HttpRequest request = new HttpRequest("POST", url);
request.setBody(body);
return request.send();
}
}
public class Main {
public static void main(String[] args) throws Exception {
String url = "http://t.weather.sojson.com/api/weather/city/101050101";
HttpClient client = new HttpClient();
String response = client.get(url);
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(response, JsonObject.class);
System.out.println(jsonObject.toString());
}
}
```
以上就是使用Java语言利用SOCKET编程构建报文并发送的示例代码,它可以通过HTTP协议发送请求,并使用第三方库Gson解析响应数据。
阅读全文