zoukankan      html  css  js  c++  java
  • Http Post 二进制通信

    客户端请求和接收(使用了httpclient4.3 和netty3.5)

    public static void httpPost11() {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(
                "http://192.168.1.74:4321/v1/user/get_notice");
        MultipartEntityBuilder d=MultipartEntityBuilder.create();
        int a=10,b=11;
        d.addBinaryBody("id", HighLowByteConvert.toHH(a));
        d.addBinaryBody("ids", HighLowByteConvert.toHH(b));
        try {
            httpPost.setEntity(d.build());
            CloseableHttpResponse httppHttpResponse2 = httpClient
                    .execute(httpPost);
            if (httppHttpResponse2.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                byte []c=EntityUtils.toByteArray(httppHttpResponse2.getEntity());
                ChannelBuffer channelBuffer = ChannelBuffers.copiedBuffer(c);
                System.out.println(channelBuffer.readInt());
                System.out.println(channelBuffer.readInt());
            }
            else
            {
            }
            httppHttpResponse2.close();
            httpClient.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    }

    服务端接收和发送

    public void handle(HttpRequest request, Channel channel) throws Exception {
            
            HttpMethod method = request.getMethod();
            if(method.equals(HttpMethod.GET)){
                handle(request.getUri(), channel);
            }else if(method.equals(HttpMethod.POST)){
                 HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(false), request);
                 List< InterfaceHttpData> datas = decoder.getBodyHttpDatas();
                 for (InterfaceHttpData interfaceHttpData : datas) {
                     if(interfaceHttpData.getHttpDataType() == HttpDataType.Attribute)
                     {
                         Attribute attribute = (Attribute) interfaceHttpData;
                         System.out.println("id :" +   attribute.getChannelBuffer().readInt());
                     }
                }
                 sendResponse("", channel);
            }
        }
    protected void sendResponse(String contextString, Channel channel){
            
            HttpResponse response = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.OK);
            ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer();
            channelBuffer.writeInt(1);
            channelBuffer.writeInt(2);
            response.setContent(channelBuffer);
            response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); //application/octet-stream 也可以
            channel.write(response).addListener(ChannelFutureListener.CLOSE);
        }
  • 相关阅读:
    通过json动态创建控制器
    记一次bug解决!改变思路解决问题的同时,还需要弄明白是什么原因。
    __proto__,prototype,constructor
    事件:compositionstart & compositionend,解决oninput获取到拼音的问题。
    事件绑定----阻止冒泡失效
    预装的win10系统如何恢复
    rem.js
    vscode 使用 github仓库
    nginx使用
    伸缩盒
  • 原文地址:https://www.cnblogs.com/tianjian/p/3886019.html
Copyright © 2011-2022 走看看