我需要一些帮助。
我正在开发一个应用程序android,它将一个字节数组和一个字符串发送到Web服务。
我的Android代码部分:
private static final int SELECT_VIDEO = 100;
private static final String NAMESPACE = "org.me.WebService";
private static final String URL = "http://192.168.1.4:8084/MyTubeWebService/MyTubeService?wsdl";
private static final String SOAP_ACTION = "MyTubeService";
private static final String METHOD_NAME = "upArquivoVideo";
//(...)
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
request.addProperty("arquivoVideo",video);
request.addProperty("descricao", "teste");
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
//androidHttpTransport.call(NAMESPACE+"/"+METHOD_NAME,envelope);
SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
text.setText("Received :" + resultsRequestSOAP.toString());
} catch (Exception e) {
e.printStackTrace();
}
和网络服务代码:
@WebService(serviceName = "MyTubeService")
public class MyTubeService {
/**
* Operação de serviço web
*/
@WebMethod(operationName = "upArquivoVideo")
@Oneway
public void upArquivoVideo(@WebParam(name = "arquivoVideo") byte[] arquivoVideo, @WebParam(name = "descricao") String descricao) {
if ( arquivoVideo.length > 0 ){
System.out.println("OK!");
}else{
System.out.println("Erro");
}
System.out.println("desricao = " + descricao);
}
Log cat一次调度Exception Socket Time out ...并在我上次测试时调度RuntimeException:无法序列化
我做错了什么?它是在android端吗?或者在网络服务方面?
答案 0 :(得分:0)
首先,您需要提高接受率以获得答案。
我发现使用ksoap将字符串和字节数组发送到Web服务时遇到问题。
以下是将字符串发送到Web服务的一种方法:
private String doLogin(String user_id, String password)
{
SoapPrimitive resultstring = null;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("user", user_id);
request.addProperty("password", password);
SoapSerializationEnvelope soapenvelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
soapenvelope.dotNet = true; //only if it is .net webservice
soapenvelope.setOutputSoapObject(request);
AndroidHttpTransport httptransport = new AndroidHttpTransport(URL);
httptransport.debug = true;
try {
httptransport.call(SOAP_ACTION, soapenvelope);
resultstring = (SoapPrimitive) soapenvelope.getResponse();
//change above line depending upon the response you get
}
catch (SocketException ex) {
Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage());
ex.printStackTrace();
} catch (Exception e) {
Log.e("Error : " , "Error on soapPrimitiveData() " + e.getMessage());
e.printStackTrace();
}
return resultstring+"";
}
SImilarly,我希望你能写一个代码来发送一个字节数组。有许多教程和代码片段可以帮助您。
希望这有帮助,
干杯