Android Can';t访问和转换web服务
我正在使用tempconvert web服务,但它不会给出任何结果,只是显示空白屏幕 这是否意味着我的应用程序无法访问web服务,或者我必须进行一些设置才能连接到URL,我使用的是ksoap2 2.6.5 这是我的密码Android Can';t访问和转换web服务,android,web-services,Android,Web Services,我正在使用tempconvert web服务,但它不会给出任何结果,只是显示空白屏幕 这是否意味着我的应用程序无法访问web服务,或者我必须进行一些设置才能连接到URL,我使用的是ksoap2 2.6.5 这是我的密码 package com.example.webservice2; import android.os.Bundle; import android.widget.TextView; import android.app.Activity; import org.ksoap2.*
package com.example.webservice2;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
import org.ksoap2.*;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
public class WebService extends Activity {
private final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";
private final String METHOD_NAME = "CelsiusToFahrenheit";
private final String NAMESPACE = "http://tempuri.org/";
private final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
Request.addProperty("celsius", "32");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(Request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
tv.setText("status:" + response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我正在使用此url中的web服务
http://www.w3schools.com/webservices/tempconvert.asmx
我希望你已经允许上网,如果没有请遵循下面的代码
...
使用下面这样的异步任务,这对我很有效,如果遇到任何问题,请告诉我
public class SyncroniseRecords extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
dialog.setMessage("Please wait...");
dialog.setCancelable(false);
dialog.show();
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
// Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
}
@Override
protected void onPostExecute(Void result)
{
dialog.cancel();
}
@Override
protected Void doInBackground(Void... params) {
/** Your Operation */
return null;
}
公共类SyncroniseRecords扩展异步任务
{
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
setMessage(“请稍候…”);
对话框。可设置可取消(false);
dialog.show();
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
//正在执行长时间运行的操作时要执行的操作。例如更新ProgessDialog
}
@凌驾
受保护的void onPostExecute(void结果)
{
dialog.cancel();
}
@凌驾
受保护的Void doInBackground(Void…参数){
/**你的手术*/
返回null;
}
}
这将在没有任何黑屏的情况下启动活动。使用onPreExecute可以显示进度栏。一旦进程完成,可以在OnPostExecute()中取消它
希望它能帮助您当您在代理网络上并且没有设置代理设置时,检查您是否不在代理网络上。是否尝试调试它?顺便说一句,您不应该在主线程上访问web服务。使用一个
AsyncTask
,或者更好的,Loader
我在调试它时收到了javadoc不可用的消息,如何在其中添加javadoc,我曾尝试构建路径并在其中添加jdk 1.7.0 doc文件夹,但它没有帮助,也使用了早期版本的javadoc,但这也不起作用。javadoc有问题吗?是的,你是对的,我在代理网络上,当我设置代理时,它的工作正常。