我的安卓代码
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
请告诉我什么是错的
答案 0 :(得分: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"
(取决于您使用的内容)。
答案 1 :(得分:0)
抱歉,我无法发表评论,只是回答。警告与问题无关。
我有同样的警告。警告只是要求您“引用”SOAP_ACTION。让我们这样做:
您的代码:
private static final String SOAP_ACTION = "http://db/du/helloRequest";
引用代码:
private static final String SOAP_ACTION = "\"http://db/du/helloRequest\"";
请注意\“,它会将引号发送到服务器。