2011-12-15 14 views
0

私はいくつかの助けが必要です。AndroidクライアントWebサービス

私は、バイト配列と1つの文字列をWebサービスに送信する1つのアプリケーションのAndroidを開発しています。私の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(); 
      } 

とWebサービスコード:

@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); 

} 

ログイン猫1時間ディスパッチ例外ソケットタイムアウト...と私の最後のテスト派遣でRuntimeException:シリアル化できません

私は間違って何をしていますか?それはアンドロイド側にありますか?またはWebサービス側で?

答えて

0

まず、回答を得るには受け入れ率を改善する必要があります。

ksoapを使用して文字列とバイト配列を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+""; 

    } 

は同様に、私はあなたがバイト配列を送信するためにコードを書くことを願って:

は、ここにあなたのWebサービスに文字列を送信するための一つの方法です。あなたを助ける多くのチュートリアルとコードスニペットがあります。このことができます

希望、

乾杯

関連する問題