如何在java中通过Socket编程中的GET方法将数据发送到Http服务器
我对Socket编程不熟悉,我编写了一个程序,通过HttpURLConnection发送get请求,它工作正常 我得到的输出: 一些XML数据是有效数据 现在我想在Socket编程中实现同样的功能如何在java中通过Socket编程中的GET方法将数据发送到Http服务器,java,sockets,httpurlconnection,Java,Sockets,Httpurlconnection,我对Socket编程不熟悉,我编写了一个程序,通过HttpURLConnection发送get请求,它工作正常 我得到的输出: 一些XML数据是有效数据 现在我想在Socket编程中实现同样的功能 String ul = "http://www.xxxxxxxx.com/cgi-bin/yyyy.cgi?name=abcd&age=25&phone=01454575"; URL url = new URL(ul); Socket c
String ul = "http://www.xxxxxxxx.com/cgi-bin/yyyy.cgi?name=abcd&age=25&phone=01454575";
URL url = new URL(ul);
Socket cliSocket = new Socket();
cliSocket.connect(new InetSocketAddress(url.getHost(), 80), 6000);
bw = new BufferedWriter(new OutputStreamWriter(cliSocket.getOutputStream()));
bw.write("GET " + url.getPath() + " HTTP/1.0\r\n");
bw.write("Host: " + url.getHost() + "\r\n");
bw.write("Pragma: cache\r\n");
bw.write("Cache-Control: private, must-revalidate\r\n");
bw.write("Content-Type: application/x-www-form-urlencoded\r\n");
bw.write("\r\n");
bw.flush();
rd = new BufferedReader(new InputStreamReader(cliSocket.getInputStream()));
serverData = new StringBuffer("");
lineSep = System.getProperty("line.separator");
while ((line = rd.readLine()) != null) {
serverData.append(line);
serverData.append(lineSep);
}
data = serverData.toString();
我得到的输出是
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 28 May 2014 09:55:25 GMT
Content-Type: text/html
Connection: close
{Error: 1}
为什么要手动使用套接字而不是库函数?@chrylis我的领导告诉我只使用sockets这是学术性的还是真正的代码?如果这是真正的代码,那就太愚蠢了;即使不使用Spring RestTemplate等有用的库,HTTP也被内置到标准Java API.rd=new BufferedReadernew InputStreamReadercliSocket.getInputStream中;将损坏您的字符编码。您需要解析响应的内容类型header@chrylis真正的代码,作为初学者,我必须遵循我的指导