Http Post方式带参数格式

2017-12-11  本文已影响0人  a9b854aded01

服务是C# WCF服务 请求是java或安卓端 以POST带参方式请求服务数据

服务端

接口:

 //安卓基础信息缓存接口
        //获取分库信息缓存
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        string GetReservoirCacheAndroid(AndroidData data);

Service:

 //安卓基础信息缓存
        //获取库存信息
        public string GetReservoirCacheAndroid(AndroidData data)
        {
              return JsonConvert.SerializeObject(MyBaseBLL.GetReservoirCacheAndroid(data.Dep_id ));
            //return Json(MyBaseBLL.GetReservoirCacheAndroid(dep_id));
        }

JAVA:

@Test
    public void test4()throws IOException, DocumentException
    {
        String url = "http://127.0.0.1:8080/BaseManage/GetReservoirCacheAndroid";
        ParameterHashMap params = new ParameterHashMap();
        params.put("dep_id",1);
        String result = ServiceHelper.post(url,params);
        ResponseMessage responseMessage = getResponseMessage(result);
       // String json = JSONUtils.writeValueAsString(responseMessage.getContent()) ;
        String json = responseMessage.getContent().toString();
        System.out.println(result);


    }

ServiceHelper

 /**
     * post方式调用http发布的C#服务
     * @param url 地址 http://192.168.1.106:8080/HelloService/GetData
     * @param nameValuePairs  参数,json格式的键值对。比如:{username:222,password:123}
     * @return json格式字符串
     * @throws IOException
     * @throws DocumentException
     */
    public static String post(String url,Map<String,String> nameValuePairs) throws IOException, DocumentException {
        return doHttpRequest(RequestType.post,url,nameValuePairs);
    }
 public static String doHttpRequest(RequestType requestType, String url,Map<String,String> nameValuePairs) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpEntity httpResponseEntity = null;
        String result = "";
        HttpUriRequest httpUriRequest = null;
        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(30000).setConnectionRequestTimeout(30000).build();

        switch (requestType) {
            case get:
                HttpGet httpGet = new HttpGet(url);
                httpGet.setConfig(requestConfig);
                httpUriRequest=httpGet;
                break;
            case post:
                HttpPost httpPost = new HttpPost(url);
//                httpPost.setEntity(new StringEntity(content,"utf-8"));
                httpPost.setEntity(new StringEntity(JSONUtils.writeValueAsString(nameValuePairs),"utf-8"));//Http Body部分
                httpPost.addHeader(HTTP.CONTENT_ENCODING,"utf-8");//Http 请求头部分
                httpPost.addHeader(HTTP.CONTENT_TYPE, "text/json");//Http 请求头部分
                httpPost.setConfig(requestConfig);
                httpUriRequest=httpPost;
        }

        CloseableHttpResponse httpResponse =httpClient.execute(httpUriRequest);

        if (httpResponse.getStatusLine().getStatusCode() == 200) {
            httpResponseEntity = httpResponse.getEntity();//获取返回的实例
            result = EntityUtils.toString(httpResponseEntity,"utf-8");
        }

        httpResponse.close();
        httpClient.close();
        return result;
    }
上一篇下一篇

猜你喜欢

热点阅读