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。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值