我是android的新手,并尝试为登录系统开发Android应用程序。我已经用Java编写了用于登录的Web服务并在android中调用它但我无法在android中调用这些Web服务请帮助我。
我的Java Web服务: -
public class Login {
public String authentication(String userName,String password){
String retrievedUserName = "";
String retrievedPassword = "";
String status = "";
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/androidlogin","root","root");
PreparedStatement statement = con.prepareStatement("SELECT * FROM user WHERE username = '"+userName+"'");
ResultSet result = statement.executeQuery();
while(result.next()){
retrievedUserName = result.getString("username");
retrievedPassword = result.getString("password");
}
// System.out.println(retrievedUserName);
// System.out.println(retrievedPassword);
if(retrievedUserName.equals(userName)&&retrievedPassword.equals(password)){
status = "Success!";
}
else{
status = "Login fail!!!";
}
}
catch(Exception e){
e.printStackTrace();
}
return status;
}
}
我的android mainActivity是: -
public class MainActivity extends Activity {
private final String NAMESPACE = "http://ws.webapp.org/";
private final String URL = "http://localhost:8086/WebApp/services/Login?wsdl";
private final String SOAP_ACTION = "http://ws.webapp.org/authentication";
private final String METHOD_NAME = "authentication";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button login = (Button) findViewById(R.id.btn_login);
login.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
loginAction();
}
});
}
private void loginAction() {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
EditText userName = (EditText) findViewById(R.id.tf_userName);
String user_Name = userName.getText().toString();
EditText userPassword = (EditText) findViewById(R.id.tf_password);
String user_Password = userPassword.getText().toString();
// Pass value for userName variable of the web service
PropertyInfo unameProp = new PropertyInfo();
unameProp.setName("userName");// Define the variable name in the web
// service method
unameProp.setValue(user_Name);// set value for userName variable
unameProp.setType(String.class);// Define the type of the variable
request.addProperty(unameProp);// Pass properties to the variable
// Pass value for Password variable of the web service
PropertyInfo passwordProp = new PropertyInfo();
passwordProp.setName("password");
passwordProp.setValue(user_Password);
passwordProp.setType(String.class);
request.addProperty(passwordProp);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
TextView result = (TextView) findViewById(R.id.tv_status);
result.setText(response.toString());
} catch (Exception e) {
}
}
}
答案 0 :(得分:1)
在Android中,您可以通过多种方式调用Web服务
排球示例
private void callWebServicePost() {
String postUrl = "http://URL";
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, postUrl, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("response", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("inc_id", "0");
params.put("device_date", "");
params.put("device_name", "");
params.put("mac_address", "");
return params;
}
};
Volley.newRequestQueue(this).add(jsonObjectRequest);
}
改造后示例
private void RetroWebServicePost() {
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http:/URL").build();
WeatherInterface weatherInterface = restAdapter.create(WeatherInterface.class);
weatherInterface.getAttendance(new Callback<AttendancePojo>() {
@Override
public void success(AttendancePojo attendancePojo, retrofit.client.Response response) {
try {
Attendance_data data[];
data = attendancePojo.getPostModel().getAttendance_data();
List<String> attendence = new ArrayList<>();
for (int i = 0; i < data.length; i++) {
attendence.add(data[i].toString());
}
Log.e("response", attendence.toString());
reponseData.setText(attendence.toString());
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void failure(RetrofitError error) {
}
});
}
HTTP Url连接帖子示例
private void reqPost() throws IOException {
String postWebUrl = "http:URL";
URL url = new URL(postWebUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
try {
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.connect();
String urlParameters = "inc_id=" + URLEncoder.encode("0", "UTF-8")
+ "&device_date="
+ URLEncoder.encode("", "UTF-8")
+ "&device_name="
+ URLEncoder
.encode("",
"UTF-8") + "&mac_address="
+ URLEncoder.encode("", "UTF-8");
//SEND REEQUEST
DataOutputStream dataOutputStream = new DataOutputStream(
connection.getOutputStream());
dataOutputStream.writeBytes(urlParameters);
dataOutputStream.flush();
dataOutputStream.close();
//GET RESPONSE
InputStream inputStream = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuffer response = new StringBuffer();
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
webResponse = response.toString();
Log.e("response", response.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
connection.disconnect();
}
}
通过这些示例,您可以调用Web服务。并获得响应