バットをオフにして、ここではソープコールの実装から無関係のビットを差し引いたものです。ksoapで名前空間宣言を削除する方法はありますか?
public class MySoapClient implements AbstractSoapClient
{
private String NAMESPACE = "http://www.examples.com/wsdl/MyService/";
private String METHOD_NAME = "getPersonDetails";
private String SOAP_ACTION = "http://www.examples.com/getPersonDetails/";
String URL = "http://192.168.0.10:8088/mockMyServiceBinding?WSDL";
public Object process() throws Exception
{
SoapSerializationEnvelope envelope = generateEnvelope();
return responseObject = makeCall(envelope);
}
private SoapSerializationEnvelope generateEnvelope()
{
// dont set a namespace for the requestobject, otherwise ksoap adds implicit namespaces onto request elements
SoapObject requestObject = new SoapObject("", METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.implicitTypes = true;
requestObject.addProperty("name", "Dave");
envelope.setOutputSoapObject(requestObject);
return envelope;
}
private Object makeCall(SoapSerializationEnvelope envelope)
{
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.debug = true;
androidHttpTransport.call(SOAP_ACTION, envelope);
return envelope.bodyIn;
}
catch (Exception e)
{
e.printStackTrace();
return e;
}
}
}
私は問題がSoapObject requestObject = new SoapObject("", METHOD_NAME);
部分だと思います。
私はSoapObject requestObject = new SoapObject("", METHOD_NAME);
を使用している場合はその後、私はbodyOutでこれを取得する:
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema"
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header/>
<v:Body>
<getPersonDetails xmlns="" id="o0" c:root="1">
<name>Dave</name>
</getPersonDetails>
</v:Body>
</v:Envelope>
私はSoapObject requestObject = new SoapObject(NAMESPACE, METHOD_NAME);
を使用している場合はその後、私はbodyOutでこれを取得する:
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema"
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header/>
<v:Body>
<n0:getPersonDetails id="o0" c:root="1" xmlns:n0="http://www.examples.com/wsdl/MyService/">
<name i:type="d:string">Dave</name>
</n0:getPersonDetails>
</v:Body>
</v:Envelope>
BUT..SoapUIは、以下を受け付けます有効なXMLリクエストとして
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema"
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header/>
<v:Body>
<getPersonDetails>
<name>Dave</name>
</getPersonDetails>
</v:Body>
</v:Envelope>
何らかの理由で、私はxmlns="http://www.examples.com/getPersonDetails/" id="o0" c:root="1"
の部分を削除する方法を見つけることができません、助けてください!
どうすればxmlns宣言を完全に削除できますか?それはSoapObjectを作成し、「」
あなたは私の命を救ってください!ありがとう! –
@Manfred Moser - これにはどのような提案がありますか? http://stackoverflow.com/questions/35573801/ksoap2-wsdl-remove-prefix-in-request – NoobMe