Как вызвать Dot Net Webservice из Android-активности с помощью KSOAP
I want to invoke my live webservice on android activity and i am using Ksoap technique ,I have made activity are as follows;
Webservice live on server as -'http://scoolbag.somee.com/service.asmx'
Method Name- 'TalkTalk'
Working EmpId- 837382
I have made two java files out of which one is activity java file and by other i am calling my webservice.
namely 'Webservice.java' for ANDROID ACTIVITY
'WebserviceCall.java'for CALLING WEBSERVICE
==================================================================
Теперь я буду вести к своему разделу кода, я выполнил действие с именем 'webservice.java'
Активность Android
public class webservice extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webservice);
final Button webserviceCallButton = (Button) findViewById(R.id.btnInvoke);
final EditText webserviceResponse = (EditText) findViewById(R.id.editEID);
webserviceCallButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Requesting to server",
Toast.LENGTH_LONG).show();
//Create Webservice class object
WebserviceCall com = new WebserviceCall();
// Initialize variables
String Eid= webserviceResponse.getText().toString();
//Call Webservice class method and pass values and get response
String aResponse = com.getTalkTalk(Eid);
//Alert message to show webservice response
Toast.makeText(getApplicationContext(), Eid+" User= "+aResponse+" Name",
Toast.LENGTH_LONG).show();
Log.i("AndroidExampleOutput", "----"+aResponse);
webserviceResponse.setText("Response : "+aResponse);
}
});
}}
Теперь я покажу вам код, по которому я звоню веб-сервису, и буду помнить, что вы вставили файл Ksaop Jar с зависимостью в папку library. Пожалуйста, посмотрите ниже упомянутый код.
WebserviceCall.java
public class WebserviceCall {
String namespace = "http://www.niceald.in/";
private String url = "http://scoolbag.somee.com/service.asmx";
String SOAP_ACTION;
SoapObject request = null, objMessages = null;
SoapSerializationEnvelope envelope;
AndroidHttpTransport androidHttpTransport;
WebserviceCall() {
}
/**
* Set Envelope
*/
protected void SetEnvelope() {
try {
// Creating SOAP envelope
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//You can comment that line if your web service is not .NET one.
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
androidHttpTransport = new AndroidHttpTransport(url);
androidHttpTransport.debug = true;
} catch (Exception e) {
System.out.println("Soap Exception---->>>" + e.toString());
}
}
// MethodName variable is define for which webservice function will call
public String getTalkTalk(String EMPid)
{
try {
SOAP_ACTION = namespace + EMPid;
//Adding values to request object
request = new SoapObject(namespace, EMPid);
//Adding Double value to request object
// PropertyInfo weightProp =new PropertyInfo();
SetEnvelope();
try {
//SOAP calling webservice
androidHttpTransport.call(SOAP_ACTION, envelope);
//Got Webservice response
String result = envelope.getResponse().toString();
return result;
} catch (Exception e) {
// TODO: handle exception
return e.toString();
}
} catch (Exception e) {
// TODO: handle exception
return e.toString();
}
}}
Я получаю исключение NetworkonMainThread. Пожалуйста, просмотрите мой код и помогите с альтернативой. Лучший способ - использовать мой веб-сервис и предоставить свой код в качестве ответа.
'Заранее спасибо'
1 ответ
Я думаю, что у вас есть проблемы с вашим конвертом, что вы делаете. Пожалуйста, проверьте эту ссылку, веб-сервисы Android Ksoap2 asmx и выполните все шаги. Ниже приведено описание того, что ksoap использует для передачи оболочки, которая является HttpTransportSE. Пожалуйста, используйте это, как это,
SoapObject soapObject = new SoapObject(NAMESPACE, METHOD_NAME);
soapObject.addProperty("Celsius","12");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(soapObject);
HttpTransportSE httpTransportSE = new HttpTransportSE(URL);
httpTransportSE.call(SOAP_ACTION, envelope);
SoapPrimitive soapPrimitive = (SoapPrimitive)envelope.getResponse();
Log.d("TAG", "doInBackground: "+soapPrimitive.toString());
return soapObject.toString();