2012-08-28 34 views
0

我的Android代码无法从Android

public class MainActivity extends Activity { 

    TextView et,tv1; 
    private static String url = "//10.0.2.2:8090/WebApplication8/du"; 
    private boolean add; 
    private static final String NAMESPACE = "//db/"; 
    private static final String SOAP_ACTION = "//db/du/helloRequest"; 
    private static final String METHOD_NAME = "hello"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // listAdapter = new ArrayAdapter<String>(this, R.layout.list_item); 
     // setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1)); 

     // setListAdapter(adapter); 

     //list1=(ListView)findViewById(R.id.list1); 
     TextView tv; 
     InputStream is = null; 

     //String[] values = new String[] { "Mercury", "Venus", "Earth", "Mars", 
     // "Jupiter", "Saturn", "Uranus", "Neptune"};  

     tv=(TextView)findViewById(R.id.tv1); 

     // Create ArrayAdapter using the planet list. 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     try 
     { 
      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
      request.addProperty("parameters", 51); 
      request.addProperty("username", "Rajapandian"); 
      request.addProperty("password", "Rajapandian"); 

      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

      envelope.setOutputSoapObject(request); 
      HttpTransportSE androidHttpTransport = new HttpTransportSE(url); 
      androidHttpTransport.call(SOAP_ACTION, envelope); 
      SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn; 
      tv.setHint("Received :" + resultsRequestSOAP.toString()); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
} 

这里传递参数的Web服务是我WSDL

<definitions targetNamespace="//db/" name="du"><types><xsd:schema><xsd:import namespace="http://db/" schemaLocation="http://localhost:8090/WebApplication8/du?xsd=1"/></xsd:schema></types><message name="hello"><part name="parameters" element="tns:hello"/></message><message name="helloResponse"><part name="parameters" element="tns:helloResponse"/></message><portType name="du"><operation name="hello"><input wsam:Action="//db/du/helloRequest" message="tns:hello"/><output wsam:Action="//db/du/helloResponse" message="tns:helloResponse"/></operation></portType><binding name="duPortBinding" type="tns:du"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/><operation name="hello"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation></binding><service name="du"><port name="duPort" binding="tns:duPortBinding"><soap:address location="http://localhost:8090/WebApplication8/du"/></port></service></definitions> 

,这里是我的du.java

@WebService(serviceName = "du") 
public class du { 



/** 
* This is a sample web service operation 
*/ 
    @WebMethod(operationName = "hello") 
public String hello(@WebParam(name ="id",targetNamespace="http://db/")int id,@WebParam(name ="username",targetNamespace="http://db/") String username,@WebParam(name ="password",targetNamespace="http://db/")String password) { 


{ 


String result="",user="",pass=""; 

    try 
     { 

     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/users","root","789456"); 
    String query= "Insert into users(id,password,username)    values('"+id+"','"+password+"','"+username+"')"; 
     PreparedStatement stm = con.prepareStatement(query); 

    stm.executeUpdate(); 







} 
     catch(ClassNotFoundException e){ 
    System.err.println ("Sql Exception"+e); 
     } 


     catch(SQLException e){ 
    System.err.println ("Sql Exception"+e); 
     } 

    return "hey"+ id+"\n"+username+"\n"+password; 
} 
} 

    } 

当我测试这一切工作正常和数据获取插入到MySQL数据库,但它的问题从Android数据不会发送和null,null结果插入到MySQL表中d空响应收到的Android屏幕 在我的服务器日志中我得到这样的警告

WARNING: Received WS-I BP non-conformant Unquoted SoapAction HTTP header: ://db/du/helloRequest 

请你告诉我什么是错

+0

能。你捕获Android发送的SOAP请求,并将其发布到这里? – RajV

回答

0

连接参数缺少http标签。

private static String url = "http://10.0.2.2:8090/WebApplication8/du"; 
    private static final String NAMESPACE = "http://db/"; 
    private static final String SOAP_ACTION = "http://db/du/helloRequest"; 
    private static final String METHOD_NAME = "hello"; 

注意:Soap Action =命名空间+方法名称。

所以,要么你METHOD_NAME应该是"helloRequest"SOAP_ACTION应该"http://db/du/hello"(取决于你使用什么)。

+0

仍为null值为paseed –

0

对不起,我不能评论,只是回答。警告与问题无关。

我有同样的警告。该警告只是要求您“引用”SOAP_ACTION。让我们行动起来吧:

您的代码:

private static final String SOAP_ACTION = "http://db/du/helloRequest"; 

的引用代码:

private static final String SOAP_ACTION = "\"http://db/du/helloRequest\""; 

请注意\”,将发送引号服务器