1
XML 요청을 만들기 위해 https://gist.github.com/itsalif/6149365 라이브러리를 사용하고 있습니다. XML을 객체에 직렬화하기 위해 Simple-XML을 사용합니다.헤더, 본문 및 매개 변수로 XML API 요청을하는 방법은 무엇입니까?
헤더와 매개 변수가 SOAP API와 연결되어 있지 않으면 XML 요청을 성공적으로 수행 할 수 있습니다. 그러나 헤더와 매개 변수로 구성된 거의 복잡한 요청을 수행하는 동안 응답을 얻지 못했습니다.
내 요구 포맷이
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.holidaywebservice.com/HolidayService_v2/">
<SOAP-ENV:Body>
<ns1:GetHolidaysAvailable>
<ns1:countryCode>UnitedStates</ns1:countryCode>
</ns1:GetHolidaysAvailable>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
코드처럼 보이는
HashMap<String, String> mapData = new HashMap<>();
final String mRequestBody = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"http://www.holidaywebservice.com/HolidayService_v2/\">\n" +
" <SOAP-ENV:Body>\n" +
" <ns1:GetHolidaysAvailable>\n" +
" <ns1:countryCode>UnitedStates</ns1:countryCode>\n" +
" </ns1:GetHolidaysAvailable>\n" +
" </SOAP-ENV:Body>\n" +
"</SOAP-ENV:Envelope>";
SimpleXmlRequest dellaRequest = new SimpleXmlRequest<String>
(Request.Method.POST, "http://www.holidaywebservice.com//HolidayService_v2/HolidayService2.asmx?wsdl", String.class, headerDataMap, bodyDataMap,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("BaseActivity", "response = " + response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("BaseActivity", "Error:" + error.getMessage());
}
}
){
@Override
public byte[] getBody() throws AuthFailureError {
try {
return mRequestBody == null ? null : mRequestBody.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s",
mRequestBody, "utf-8");
return null;
}
}
};
나는 400 응답 코드 즉 BAD REQUEST, 상태 유효하지 않은 입력이 제공되는 것을 예를 들어, 유효성 검사 오류를 얻고있다 또는 누락 된 데이터.
이 api는 우편 배달부의 휴식 클라이언트에서 잘 작동합니다. 그래서 내가 뭘 잘못하고 있는지 알 수는 없습니다.