【发布时间】:2015-05-27 05:31:10
【问题描述】:
我是编程界的新手,所以我需要一些帮助。 我必须在 android 上使用 web 服务。我已经完成了一个可以正常工作的方法,但是当我必须传递参数时就会出现问题。我不确定我做错了什么。
AsyncTask 的代码如下:
public class PegaHorarioProfessorTask extends AsyncTask<Object, Object, String> {
private static final String NAMESPACE = "http://tempuri.org/";
private static String URL = "http://fatec.aied.com.br/publico.asmx?WSDL"; //"10.68.76.4/publico.asmx?WSDL"; // http://fatec.aied.com.br/publico.asmx?WSDL
private static final String SOAP_ACTION = "http://tempuri.org/HorarioProfessor";
@Override
public String doInBackground(Object... objects) {
String frase = null;
SoapObject soap = new SoapObject(NAMESPACE, "HorarioProfessor");
String id = "11";
PropertyInfo profId =new PropertyInfo();
profId.setName("Id");
profId.setValue(id);
profId.setType(String.class);
soap.addAttribute("Id", id);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(soap);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
SoapObject result = null;
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject resultado1 = (SoapObject)envelope.getResponse();
//result = (SoapObject) envelope.bodyIn;
//result.getProperty(0);
if (result != null) {
Log.i("Result", result.toString());
return result.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return result.toString();
}
}
所以,我传递了 ID 11,它返回 2 个字符串。问题是:除了“anyType{}”之外,它不返回任何内容,而且我不确定如何接收两个字符串。我评论了两行,因为我不确定通过信封.bodyIn 或信封.getResponse() 获得结果是否更好。
也许,需要发布接收结果的Activity:
public class ActivityHorarioProfessor extends ActionBarActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_horario_professor);
String[] aux = null;
Intent intent = this.getIntent();
Professores professor = (Professores) intent.getSerializableExtra("professorSelecionado");
if(professor!=null) {
PegaHorarioProfessorTask prof = new PegaHorarioProfessorTask();
Log.i("Número", String.valueOf(prof));
String auxi = null;
try {
auxi = prof.execute().get().toString();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
Log.i("Auxi", String.valueOf(auxi));
}
else {
Log.i("It's", "WRONG");
}
}
}
它只是返回一个空的 (anyType{}) 答案。
【问题讨论】:
-
你能否请求json或xml格式的数据,这样编码更灵活,hrskrs已经解决了你的问题
标签: android getresponse envelope