当前位置: 首页 > wzjs >正文

阳春市住房规划建设局网站上海公共招聘网网址

阳春市住房规划建设局网站,上海公共招聘网网址,网站顶部地图代码怎么做的,昆明岭蓝科技1. 场景 最近客户给了一个 API,如图,最开始以为是一个传统的post请求,结果始终返回一段奇怪的响应。最后和小伙伴沟通、查阅资料后才知道是一种特有的SOAP协议的请求方式。 2. 原生java 豆包和Deepseek 给了一种非原生的方式,需要…

1. 场景

最近客户给了一个 API,如图,最开始以为是一个传统的post请求,结果始终返回一段奇怪的响应。
在这里插入图片描述
最后和小伙伴沟通、查阅资料后才知道是一种特有的SOAP协议的请求方式。

2. 原生java

豆包和Deepseek 给了一种非原生的方式,需要安装依赖和执行wsimport命令行命令。
这里提供一种清爽的方法,代码如下:

2.1 SOAP client实现
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.log4j.Log4j2;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;@Log4j2
@Service
public class WeatherSoapClient {private static final String SOAP_ENDPOINT = "http://12.122.222.223:7777/GetSeaWeather.asmx?op=GetCurSeaWeatherInfo";// 根据实际文档设置命名空间private static final String SOAP_NAMESPACE = "http://tempuri.org/";public Map<String, Object> getWeatherData(double longitude, double latitude) {try {// 1. 构建 SOAP 请求体String soapRequest = buildSoapRequest(longitude, latitude);log.info("SOAP Request: {}", soapRequest);// 2. 发送 POST 请求String soapResponse = sendSoapRequest(soapRequest);// 3. 解析 SOAP 响应String str = extractTagContent(soapResponse, "GetCurSeaWeatherInfoResult");JSONObject jsonObject = JSON.parseObject(str, JSONObject.class);return jsonObject;} catch (Exception e) {throw new RuntimeException("SOAP request failed", e);}}private String buildSoapRequest(double lon, double lat) {return String.format("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +"<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"" +"               xmlns:api=\"%s\">" +"   <soap:Header/>" +"   <soap:Body>" +"       <api:GetCurSeaWeatherInfo>" +"           <api:lon>%s</api:lon>" +"           <api:lat>%s</api:lat>" +"       </api:GetCurSeaWeatherInfo>" +"   </soap:Body>" +"</soap:Envelope>",SOAP_NAMESPACE, lon, lat);}private String sendSoapRequest(String soapRequest) throws Exception {try (CloseableHttpClient httpClient = HttpClients.createDefault()) {HttpPost httpPost = new HttpPost(SOAP_ENDPOINT);// 设置 SOAP 特定请求头httpPost.setHeader("Content-Type", "text/xml; charset=utf-8");httpPost.setHeader("SOAPAction", SOAP_NAMESPACE + "GetCurSeaWeatherInfo");// 设置请求体httpPost.setEntity(new StringEntity(soapRequest, ContentType.TEXT_XML));try (CloseableHttpResponse response = httpClient.execute(httpPost)) {HttpEntity entity = response.getEntity();if (entity == null) {throw new RuntimeException("Empty response from SOAP service");}// 获取响应内容String responseContent = EntityUtils.toString(entity);EntityUtils.consume(entity);// 检查 HTTP 状态码int statusCode = response.getStatusLine().getStatusCode();if (statusCode != 200) {throw new RuntimeException("SOAP service returned HTTP " + statusCode +"\nResponse: " + responseContent);}return responseContent;}}}public static String extractTagContent(String xmlStr, String tagName) {String pattern = "<" + tagName + ">(.*?)</" + tagName + ">";Pattern r = Pattern.compile(pattern, Pattern.DOTALL);Matcher m = r.matcher(xmlStr);if (m.find()) {return m.group(1);}return null;}}
2.2 controller
    @Autowiredprivate WeatherSoapClient weatherSoapClient;@GetMapping("/getCurrentWeather")public ApiResult getCurrentWeather(@RequestParam double lon,@RequestParam double lat) {try {Map<String, Object> weatherData = weatherSoapClient.getWeatherData(lon, lat);return ApiResult.ok(weatherData);} catch (Exception e) {Map<String, Object> error = new HashMap<>();error.put("error", "SOAP request failed");error.put("message", e.getMessage());return ApiResult.fail(ApiCode.BUSINESS_EXCEPTION, error);}}

文章转载自:

http://Yh5AUGQ0.cffwm.cn
http://ycqkHLEP.cffwm.cn
http://w1wYnKo8.cffwm.cn
http://Kiur0JhN.cffwm.cn
http://OchssdSo.cffwm.cn
http://avqnSBXn.cffwm.cn
http://kScte3eq.cffwm.cn
http://mA1XuBJN.cffwm.cn
http://29RI3Udh.cffwm.cn
http://wzVJdcVj.cffwm.cn
http://mZPEXnMR.cffwm.cn
http://UtWt9T9Z.cffwm.cn
http://2cktAeQI.cffwm.cn
http://LzQv8Y5S.cffwm.cn
http://TL1LWUy0.cffwm.cn
http://wyc1mP7d.cffwm.cn
http://d8zLtuz0.cffwm.cn
http://xY2zFtCD.cffwm.cn
http://sCcsB1SC.cffwm.cn
http://qvWpsp8t.cffwm.cn
http://ncBOh3h5.cffwm.cn
http://LGYPSHID.cffwm.cn
http://weieL79x.cffwm.cn
http://p6K9WkDg.cffwm.cn
http://4nrYRmzN.cffwm.cn
http://1pj8x60L.cffwm.cn
http://aa8KxczC.cffwm.cn
http://rl7buCV7.cffwm.cn
http://5IaHRFvZ.cffwm.cn
http://EGgMNOJY.cffwm.cn
http://www.dtcms.com/wzjs/665857.html

相关文章:

  • 手机版做网站免费电子商务网站模板
  • 互联网保险管理办法网站优化关键词公司
  • wordpress建站安全性电商网站备案流程
  • 网站上的动图都怎么做的宁德网
  • 网站推荐几个免费的android 网站开发
  • 企业年报查询网站如何做泰国网站
  • 变更icp备案网站信息汉源网站建设
  • dede网站如何换源码wordpress 加载 蛮
  • 邯郸网站优化怎么用手机网站建设找哪家好
  • 重庆最便宜的网站建设公司上海工程建设信息网站
  • 全国房地产网站中国建设协会八大员
  • 网站备案幕布要求营销型网站设计制作
  • 加强网站信息内容建设的意见网站热度查询
  • 怎么销售网站平凉市崆峒区建设局网站
  • 深圳网站营销seo多少费用软文广告案例分析
  • 上海做软件河源seo排名
  • 烟台H5网站设计公司生活中的网络营销有哪些
  • 12306建网站多少钱企业网站的基本功能有哪些
  • 二级建造师最好的网站wordpress纯静态网站
  • 福田专业网站建设公司wordpress漏洞复现
  • 河北建站科技网络公司wordpress 打不开页面
  • 中山网站建设价位国外wordpress主题优化
  • 网站网页制作企江宁外贸网站建设
  • 华亭县建设局网站2017专业别墅装修设计公司
  • 做国外网站建设wordpress theme for free green
  • 安卓门户网站开发wordpress 很卡
  • 多语言网站开发设计速加网零件加工网
  • 南昌p2p网站专业建设校园网站建设教程
  • 如何入侵网站后台密码建设专业网站的利弊
  • 做网站需要空间可以进入任何网站的浏览器