java 在socket中获取post 参数 代码
时间: 2023-02-08 20:24:20 浏览: 196
在 Java 中使用 Socket 获取 POST 参数的代码如下:
```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
// 建立 Socket 连接
Socket socket = new Socket("www.example.com", 80);
OutputStream os = socket.getOutputStream();
// 发送 POST 请求
String request = "POST /path HTTP/1.1\r\n" +
"Host: www.example.com\r\n" +
"Content-Type: application/x-www-form-urlencoded\r\n" +
"Content-Length: " + postData.length() + "\r\n" +
"\r\n" +
postData + "\r\n";
os.write(request.getBytes());
// 读取响应
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line).append("\n");
}
reader.close();
socket.close();
// 解析响应中的 POST 参数
Map<String, String> parameters = parsePostParameters(response.toString());
String value = parameters.get("key");
}
public static Map<String, String> parsePostParameters(String response) {
Map<String, String> parameters = new HashMap<>();
String body = response.split("\n\n")[1]; // 分离出响应正文
for (String pair : body.split("&")) { // 按照 "&" 分割成多个参数
int index = pair.indexOf("=");
String key = pair.substring(0, index);
String value = pair.substring(index + 1);
value = URLDecoder.decode(value, StandardCharsets.UTF_8); // 解码 URL 编码
parameters.put(key, value);
}
return parameters;
}
}
```
注意:这段代码仅演示了如何通过 Socket 获取 POST 参数的基本方法,在实际应用中还需要考虑许多其它细节,比如处