Android客户端请求服务器的WebService时,服务器接收不到参数。

在Android客户端调用带参数的WebService时,虽然客户端调试无误,网页访问正常,但服务器始终无法接收到参数。核心代码展示了创建SoapObject、添加参数、设置SoapSerializationEnvelope的过程,但服务器仍收不到值。可能是请求头设置、SOAP Action或其它配置问题导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当客户端调用无参的方法时,是可以的。在网页上访问带参的WebService也是可以的,客户端调试也没有任何问题,但是服务器接收到的参数一直值空的,就是接收不到。下面是我Android客户端的核心代码,跪求大神帮忙。

  public String CallWebService( String MethodName ) {  
         
     System.out.println( "MethodName=" + MethodName ); 
    
     //1、新建SoapObject对象,指定webservice的命名空间和调用的webservice方法名
        SoapObject request = new SoapObject( Namespace, MethodName );  
        
        //2、给SoapObject对象添加参数  
        //Add the property to request object
        request.addProperty( "id", lockparkId );
        
        //3、生成调用Webservice方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(  
                SoapEnvelope.VER11);//注意是VER11,而不是VER12 
        
        //4、设置bodyOut属性的值为SoapObject对象request
        envelope.bodyOut = request;
        
        //5、指定webservice的类型为dotNet
        envelope.dotNet = true;
        
        envelope.setOutputSoapObject( request ); // 设置请求参数 
        
        //6、创建HttpTransportSE对象,并指定WebService的WSDL文档的URL
        HttpTransportSE androidHttpTransport = new HttpTransportSE( WEB_SERVICE_URL ); 
        
        //使用call方法调用WebService方法 
        try {
            
     //第一个参数不仅仅是soapAction,还要是soapAction + MethodName
     androidHttpTransport.call( SOAP_Action + MethodName, envelope );

             } catch (HttpResponseException e) {

     e.printStackTrace();

     } catch (IOException e) {

 e.printStackTrace();

 } catch (XmlPullParserException e) {

 e.printStackTrace();

 }
            
             //如果服务器返回的是byte[]类型
             //SoapObject response = (SoapObject) envelope.bodyIn;
        
             //如果服务器返回的是String类型
             try {
                
      Object response = envelope.getResponse();
  result = response.toString(); // 获取从服务器端返回的XML字符串 
  System.out.println("Result:"+result);
  return result;

  } catch (SoapFault e) {

  e.printStackTrace();

  }
             
              return result;
             
    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值