`
solidsnake2007
  • 浏览: 28813 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Socket实现访问HTTP服务并且获得返回值

 
阅读更多
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        request.setCharacterEncoding("utf-8");
        response.setContentType("application/x-javascript;charset=utf-8");
        InterventionVO target = dao.findById(200001001L);
        PrintWriter writer = response.getWriter();
        //"application/x-javascript"
        writer.append("'name':'张3'");

        System.out.println(JSON.toJSON(target));
        writer.flush();
        writer.close();


    }

    以上是服务端代码 (URL 为 interventionService/testJson.service)

  

    客户端需要链接时可以这样使用Socket访问这个URL并获得这个链接

 

 public static void main2(String[] args) throws IOException {
        Socket s = new Socket("192.168.0.198", 8080);

        OutputStream outputStream = s.getOutputStream();
        PrintWriter p = new PrintWriter(outputStream);
        p.write("GET /interventionService/testJson.service HTTP/1.1\n" +
                "Host: localhost:8080\n" +
                "Connection: keep-alive\n" +
                "User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5\n" +
                "Accept: text/html,application/xhtml+xml,application/xml,application/x-javascript;q=0.9,*/*;q=0.8\n" +
                "Accept-Encoding: gzip,deflate,sdch\n" +
                "Accept-Language: zh-CN,zh;q=0.8\n" +
                "Accept-Charset: UTF-8,*;q=0.5\n" +
                "\r\n\r\n\r\n");
        p.flush();
        InputStream inputStream = s.getInputStream();
        String str = readInputStream(Charset.forName("UTF-8"), inputStream);
        System.out.println(str);
        s.close();
    }
    这样就可以了,需要有三点注意的

 

    1. readInputStream就是读取数据的函数自行编写即可.

    2. 如果需要带Cookie 可以在write里多加一句"Cookie:xxxxxx“。(提示一下,可以做跨域免登录)

    3. 在writer的末尾端必须有3行换行且必须是\r\n (HTTP协议如此规定).

    别忘了在write之后flush。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics