SSM中通过okhttp3向接口发送xml格式的请求参数
生活随笔
收集整理的這篇文章主要介紹了
SSM中通过okhttp3向接口发送xml格式的请求参数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
在SSM項目中的后臺Controller中需要想asp的接口發送xml格式的請求參數。
依據接口文檔示例代碼。
入參:
<Request><ServiceCode>get_fight</ServiceCode><Pid>111111</Pid><UserName>badao</UserName><Sign>222222</Sign><Params><DepartCity>SHA</DepartCity><ArriveCity>SIN</ArriveCity><StartDate>2019-07-23</StartDate></Params> </Request>實現
項目中引入pom依賴
<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>3.6.0</version></dependency>實現代碼
public static String GJticketBookJsonStr(GJBookParam bookParam) throws ParseException, IOException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date now = new Date();String strNow = sdf.format(now);//使用StringBufer來拼接xml格式參數StringBuffer sbParams = new StringBuffer();//使用append方法來追加公共參數sbParams.append("<Flight>");sbParams.append("<DepartCity>").append(bookParam.getFlightInfo().getDepartCity()).append("</DepartCity>");sbParams.append("<ArriveCity>").append(bookParam.getFlightInfo().getArriveCity()).append("</ArriveCity>");sbParams.append("<StartDate>").append(bookParam.getFlightInfo().getStartDate()).append("</StartDate>");sbParams.append("<SeqNo>").append(bookParam.getFlightInfo().getSeqNo()).append("</SeqNo>");sbParams.append("</Flight>");sbParams.append("<PassengerInfo>");//通過循環拼接多個參數節點for(ParamGJPassenger passenger : bookParam.getPassengerInfo()) {sbParams.append("<Passenger>");sbParams.append("<SurName>").append(passenger.getSurName()).append("</SurName>");sbParams.append("<Name>").append(passenger.getName()).append("</Name>");sbParams.append("<PassType>").append(passenger.getPassType()).append("</PassType>");sbParams.append("<Sex>").append(passenger.getSex()).append("</Sex>");sbParams.append("<IdType>").append(passenger.getIdType()).append("</IdType>");sbParams.append("<IdDate>").append(passenger.getIdDate()).append("</IdDate>");sbParams.append("<Id>").append(passenger.getId()).append("</Id>");sbParams.append("<Country>").append(passenger.getCountry()).append("</Country>");sbParams.append("<CountryCode>").append(passenger.getCountryCode()).append("</CountryCode>");sbParams.append("<Birthdays>").append(passenger.getBirthdays()).append("</Birthdays>");sbParams.append("</Passenger>");}sbParams.append("</PassengerInfo>");//將多個參數節點格式化進請求參數中String sign = "%s%s%s%s%s";?sign = String.format(sign, sbParams.toString(), "1111", ShiroHelper.md5Encrypt("111111", null, null, 1).toUpperCase(), strNow, "11111111");sign = ShiroHelper.md5Encrypt(sign, null, null, 1).toUpperCase();String request = "<Request><ServiceCode>%s</ServiceCode><Pid>%s</Pid><UserName>%s</UserName><Sign>%s</Sign><Params>%s</Params></Request>";request = String.format(request, "jiekouName", "111111", "1111111", sign, sbParams.toString());System.out.println(request);//客戶端對象OkHttpClient client = new OkHttpClient();//請求體RequestBody body = RequestBody.create(MediaType.parse("application/xml;charset=utf-8"), request);//請求對象 url 請求頭 post方式Request req = new Request.Builder().url("http://127.0.0.1:8888/test.aspx").header("Content-Type", "application/xml").post(body).build();//發送請求并接受收響應Response response = client.newCall(req).execute();if (!response.isSuccessful()){throw new IOException("Unexpected code " + response);}String jsonResult = response.body().string();return jsonResult;}斷點效果
?
總結
以上是生活随笔為你收集整理的SSM中通过okhttp3向接口发送xml格式的请求参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSM中向后端传递的属性为多个对象的实现
- 下一篇: Okhttp3中设置超时的方法