का उपयोग करके एंड्रॉइड में सुरक्षा शीर्षलेख के साथ साबुन लिफाफा बनाएं, मैं ksoap2 का उपयोग करके एंड्रॉइड में सुरक्षा शीर्षलेख के साथ साबुन लिफाफा बनाना चाहता हूं। एंड्रॉइड का मेरा कोड इस प्रकार है ...ksoap2
import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.kxml2.kdom.Element;
import org.kxml2.kdom.Node;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SOP_WebService extends Activity
{
private final String NAMESPACE = "http://xmlns.oracle.com/WorklistRetrival";
private final String URL = "http://www.sample.com/orabpel/default/WorklistRetrival/1.0";
private final String SOAP_ACTION = "process";
private final String METHOD_NAME = "WorklistRetrievalREQ";
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.soap_webservice);
Button btnClick = (Button) findViewById(R.id.btnClick);
btnClick.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
callWebservice();
}
});
}
public void callWebservice()
{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo pi = new PropertyInfo();
pi.setNamespace(NAMESPACE);
pi.setName("WorklistType");
pi.setValue("PO_REQUISITION");
request.addProperty(pi);
PropertyInfo p2 = new PropertyInfo();
p2.setNamespace(NAMESPACE);
p2.setName("Status");
p2.setValue("TODO");
request.addProperty(p2);
PropertyInfo p3 = new PropertyInfo();
p3.setNamespace(NAMESPACE);
p3.setName("Mode");
p3.setValue("");
request.addProperty(p3);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
Log.i("bodyout", "" + envelope.bodyOut.toString());
try
{
androidHttpTransport.debug = true;
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
Log.i("myApp", response.toString());
Log.i("request", "" + envelope.bodyIn);
Log.i("response", "" + envelope.bodyOut);
Log.i("request", "" + androidHttpTransport.requestDump);
Log.i("response", "" + androidHttpTransport.responseDump);
}
catch (SoapFault e)
{
Log.d("soapFault", "soapFault");
e.printStackTrace();
}
catch (Exception e)
{
Log.d("Exception", "Exception");
e.printStackTrace();
Log.d("Exception Generated", ""+e.getMessage());
}
}
}
और ऊपर कोड सुरक्षा हेडर के बिना साबुन अनुरोध के नीचे बनाते हैं।
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
</soap:Header>
<soap:Body xmlns:ns1="http://xmlns.oracle.com/bpel/aubi/mobile/Worklist">
<ns1:WorklistRetrievalREQ>
<ns1:WorklistType>HR_OFFER</ns1:WorklistType>
<ns1:Status>TODO</ns1:Status>
<ns1:Mode/>
</ns1:WorklistRetrievalREQ>
</soap:Body>
</soap:Envelope>
लेकिन मैं सुरक्षा हेडर के साथ साबुन अनुरोध नीचे बनाने की जरूरत
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" soap:mustUnderstand="1">
<wsse:UsernameToken
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:Username>cbrown</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">welcome</wsse:Password></wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body xmlns:ns1="http://xmlns.oracle.com/bpel/aubi/mobile/Worklist">
<ns1:WorklistRetrievalREQ>
<ns1:WorklistType>HR_OFFER</ns1:WorklistType>
<ns1:Status>TODO</ns1:Status>
<ns1:Mode/>
</ns1:WorklistRetrievalREQ>
</soap:Body>
</soap:Envelope>
कृपया मुझे बताओ कि परिवर्तन किस तरह इस कोड
शेयर के लिए धन्यवाद मेरे लिए काम कर रहा है !!! कोड साझा करने के लिए – Mateus
धन्यवाद। आपकी मूल आवश्यकता में आईडी = उपयोगकर्ता नाम टोकन -1 नहीं है जो आपके अंतिम कोड में है। – Hong
@kels: यदि आप SOAP प्रोजेक्ट के पूर्ण नमूना स्रोत कोड को साझा कर सकते हैं, तो मैं अत्यधिक सराहना करता हूं, ताकि मैं इसे बना और समझ सकूं। क्या आपने इसे कहीं होस्ट किया है? मैं अभी भी कई विकल्प की कोशिश नहीं कर रहा हूं। – Raa