Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中通过Socket编程中的GET方法将数据发送到Http服务器_Java_Sockets_Httpurlconnection - Fatal编程技术网

如何在java中通过Socket编程中的GET方法将数据发送到Http服务器

如何在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

我对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 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真正的代码,作为初学者,我必须遵循我的指导