0

私のアンドロイドコード

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();
        }

    }
}

ここに私の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テーブルに挿入され、サーバーログのAndroid画面でnull応答が受信されますこの警告が表示されます

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

何が悪いのか教えてください

4

2 に答える 2

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";

注 :ソープ アクション = 名前空間 + メソッド名。

したがって、あなたがそうMETHOD_NAMEあるべき"helloRequest"か 、そうあるSOAP_ACTION べきかのどちらか"http://db/du/hello"です(使用したものに応じて)。

于 2012-08-28T18:34:24.490 に答える