后台发送post/get请求并对相应参数进行处理示例

get请求:

@GetMapping("/geo")
public HttpEntity geoConvert(
         String coords,
         String from,
         String to
) throws URISyntaxException {
    //可能集群,所壹返回list
    List<ServiceInstance> instances = discoveryClient.getInstances("bai-service");
    ServiceInstance instance = instances.get(0);

    // String host = instance.getHost();//获取ip
    URI uri = instance.getUri();//获取协议+ip+端口号

    CloseableHttpClient httpclient = HttpClients.createDefault();
   /* Map<String, Object> param = new HashMap<>();
    param.put("coords",coords);
    param.put("from",from);
    param.put("to",to);
    param.put("output", "json");
    param.put("out_put", "json");*/

    System.out.println("传过来的参数"+from);
    //创建URIBuilder
    //URIBuilder uriBuilder = new URIBuilder("http://"+"/bai/do");
    URIBuilder uriBuilder = new URIBuilder(uri+"/bai/geo");
     //URIBuilder uriBuilder = new URIBuilder("http://"+"/bai/geo");
    //设置参数
    //uriBuilder.setParameter("Param", String.valueOf(param));
    uriBuilder.setParameter("from", String.valueOf(from));
    uriBuilder.setParameter("to", String.valueOf(to));
    uriBuilder.setParameter("coords", String.valueOf(coords));

    //创建HttpGet对象,设置url访问地址
    HttpGet httpGet = new HttpGet(uriBuilder.build());
    System.out.println("发起请求的信息:"+httpGet);

    String res ="";
    try {
        CloseableHttpResponse response = httpclient.execute(httpGet);
            // 获取响应实体
            HttpEntity entity = response.getEntity();
            System.out.println("--------------------------------------");
            // 打印响应状态
            System.out.println(response.getStatusLine());
            if (entity != null) {
                // 打印响应内容长度
                System.out.println("Response content length: " + entity.getContentLength());
                // 打印响应内容
                System.out.println("Response content: " + EntityUtils.toString(entity));
            }
            System.out.println("------------------------------------");
         return entity;
    }catch (Exception e){
        log.error("失败", e);
        logger.error("操作失败,请求ip={},失败原因:{}", SysLogUtil.getRealIP(),e.getMessage(),SysLogUtil.createSysLog());
        GeoConvert geoConvert = new GeoConvert();
        geoConvert.setMessage(res);
        geoConvert.setErrorMsg(e.toString());
        return null;
    }
}

post请求:

@RestController
@RequestMapping("/net")
public class NetworkFaultMatchSrvController {
    
    private Logger logger = LoggerFactory.getLogger("httplog");

    @Autowired
    private NetworkFaultMatchSrvService networkFaultMatchSrvService;

    //nacos封装了一个工具类DiscoveryClient  获取服务中心所有清单
    @Autowired
    private DiscoveryClient discoveryClient;

    
    @ApiOperation(value = "xxx接口")
    @RequestMapping(value = "/queryCustomerToJzgz", method = RequestMethod.POST)
    public BaseResult queryCustomerToJzgz(@RequestBody Parameters parameters) throws URISyntaxException {
        long start = System.currentTimeMillis();
        BaseResult br = new BaseResult();
        //===========================================
        //可能集群,所壹返回list
        List<ServiceInstance> instances = discoveryClient.getInstances("net-service");
        ServiceInstance instance = instances.get(0);

        // String host = instance.getHost();//获取ip
        URI uri = instance.getUri();//获取协议+ip+端口号

        CloseableHttpClient httpclient = HttpClients.createDefault();

        System.out.println("传过来的参数"+parameters);
        //创建URIBuilder 
        //URIBuilder uriBuilder = new URIBuilder("http://"+"/baidu/do");
        //URIBuilder uriBuilder = new URIBuilder(uri+"/networkFaultMatchSrv/queryCustomerToJzgz");
        //URIBuilder uriBuilder = new URIBuilder("http://"+"/baidu/geo");

        // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();

        // 创建Post请求
        HttpPost httpPost = new HttpPost(uri+"/networkFaultMatchSrv/queryCustomerToJzgz");

        //设置参数
        // 我这里利用阿里的fastjson,将Object转换为json字符串;
        // (需要导入com.alibaba.fastjson.JSON包)
        String jsonString = JSON.toJSONString(parameters);
        StringEntity entity = new StringEntity(jsonString, "UTF-8");
        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
        httpPost.setEntity(entity);
        httpPost.setHeader("Content-Type", "application/json;charset=utf8");

        // 响应模型
        CloseableHttpResponse response = null;
        System.out.println("发起请求的信息:"+httpPost);

        try {
        // 由客户端执行(发送)Post请求
            response = httpClient.execute(httpPost);
            // 从响应模型中获取响应实体
            HttpEntity responseEntity = response.getEntity();

            System.out.println("响应状态为:" + response.getStatusLine());
            String s ="";
            if (responseEntity != null) {
                System.out.println("响应内容长度为:" + responseEntity.getContentLength());
                s=EntityUtils.toString(responseEntity);
                System.out.println("响应内容为:" + s);
            }
            br.setCode("000");
          //  String result = networkFaultMatchSrvService.queryCustomerToJzgz(parameters);
            br.setMessage("查询成功");
            br.setData(s);
        } catch (Exception e) {
            logger.error("xxx接口调用失败,请求ip={},失败原因:{}",SysLogUtil.getRealIP(),e.getMessage(),SysLogUtil.createSysLog());
            e.printStackTrace();
        }finally {
            try {
                // 释放资源
                if (httpClient != null) {
                    httpClient.close();
                }
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        logger.info("xxx接口,请求ip={},耗时:{}ms,入参:{}",SysLogUtil.getRealIP(),System.currentTimeMillis()-start,parameters,SysLogUtil.createSysLog());
        return br;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于这个问题,我们可以使用 Java 的 HttpUrlConnection 类来发送 POST 请求,并使用 Gson 库将响应参数封装成对象。以下是示例代码: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import com.google.gson.Gson; public class PostRequestExample { public static void main(String[] args) { try { URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setDoOutput(true); // 构造请求参数 String requestBody = "{\"param1\":\"value1\", \"param2\":\"value2\"}"; // 发送请求 OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); writer.write(requestBody); writer.flush(); // 获取响应 BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); // 将响应参数封装成对象 Gson gson = new Gson(); MyResponseObject responseObject = gson.fromJson(response.toString(), MyResponseObject.class); // 输出结果 System.out.println(responseObject.toString()); } catch (Exception e) { e.printStackTrace(); } } private static class MyResponseObject { private String result; private int code; public String getResult() { return result; } public void setResult(String result) { this.result = result; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } @Override public String toString() { return "MyResponseObject [result=" + result + ", code=" + code + "]"; } } } ``` 以上代码中,我们使用 HttpUrlConnection 类发送 POST 请求,并设置请求头和请求参数。在获取响应后,我们使用 Gson 库将响应参数封装成 MyResponseObject 对象,以方便后续操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值