我正在尝试在Android studio中构建登录活动,并使用xampp server连接到mysql数据库。尝试使用jTDS.jar,sqljdbc.jar,mysql-connector-java.jar.But没有任何帮助。
调试时我收到以下异常。 logcat的 -
04-29 08:43:05.904 29384-29384/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.requestPermissions, referenced from method com.example.somya.client_feedback_application.MainActivity.access$super
04-29 08:43:05.904 29384-29384/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 193: Landroid/app/Activity;.requestPermissions ([Ljava/lang/String;I)V
04-29 08:43:05.916 29384-29384/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.onRequestPermissionsResult, referenced from method com.example.somya.client_feedback_application.MainActivity.access$super
04-29 08:43:05.916 29384-29384/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 160: Landroid/app/Activity;.onRequestPermissionsResult (I[Ljava/lang/String;[I)V
04-29 08:43:05.916 29384-29384/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.requestVisibleBehind, referenced from method com.example.somya.client_feedback_application.MainActivity.access$super
04-29 08:43:05.916 29384-29384/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 194: Landroid/app/Activity;.requestVisibleBehind (Z)Z
04-29 08:43:05.916 29384-29384/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.shouldShowRequestPermissionRationale, referenced from method com.example.somya.client_feedback_application.MainActivity.access$super
04-29 08:43:05.916 29384-29384/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 227: Landroid/app/Activity;.shouldShowRequestPermissionRationale (Ljava/lang/String;)Z
和我的JsonParser.java -
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
public class JSONParser {
String charset = "UTF-8";
HttpURLConnection conn;
DataOutputStream wr;
StringBuilder result;
URL urlObj;
JSONObject jObj = null;
StringBuilder sbParams;
String paramsString;
public JSONObject makeHttpRequest(String url, String method,
HashMap<String, String> params) {
sbParams = new StringBuilder();
int i = 0;
for (String key : params.keySet()) {
try {
if (i != 0){
sbParams.append("&");
}
sbParams.append(key).append("=")
.append(URLEncoder.encode(params.get(key), charset));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
i++;
}
if (method.equals("POST")) {
// request method is POST
try {
urlObj = new URL(url);
conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept-Charset", charset);
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.connect();
paramsString = sbParams.toString();
wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(paramsString);
wr.flush();
wr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
else if(method.equals("GET")){
// request method is GET
if (sbParams.length() != 0) {
url += "?" + sbParams.toString();
}
try {
urlObj = new URL(url);
conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoOutput(false);
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept-Charset", charset);
conn.setConnectTimeout(15000);
conn.connect();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
//Receive the response from the server
InputStream in = new BufferedInputStream(conn.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
Log.d("JSON Parser", "result: " + result.toString());
} catch (IOException e) {
e.printStackTrace();
}
conn.disconnect();
// try parse the string to a JSON object
try {
jObj = new JSONObject(result.toString());
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON Object
return jObj;
}
}
运行应用程序后,Logcat说 -
04-29 15:12:55.550 19793-19793/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.requestPermissions, referenced from method com.example.somya.client_feedback_application.Login.access$super
04-29 15:12:55.550 19793-19793/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 193: Landroid/app/Activity;.requestPermissions ([Ljava/lang/String;I)V
04-29 15:12:55.570 19793-19793/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.onRequestPermissionsResult, referenced from method com.example.somya.client_feedback_application.Login.access$super
04-29 15:12:55.570 19793-19793/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 160: Landroid/app/Activity;.onRequestPermissionsResult (I[Ljava/lang/String;[I)V
04-29 15:12:55.570 19793-19793/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.requestVisibleBehind, referenced from method com.example.somya.client_feedback_application.Login.access$super
04-29 15:12:55.570 19793-19793/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 194: Landroid/app/Activity;.requestVisibleBehind (Z)Z
04-29 15:12:55.570 19793-19793/com.example.somya.client_feedback_application I/dalvikvm: Could not find method android.app.Activity.shouldShowRequestPermissionRationale, referenced from method com.example.somya.client_feedback_application.Login.access$super
04-29 15:12:55.570 19793-19793/com.example.somya.client_feedback_application W/dalvikvm: VFY: unable to resolve virtual method 227: Landroid/app/Activity;.shouldShowRequestPermissionRationale (Ljava/lang/String;)Z
04-29 15:13:09.773 19793-19793/com.example.somya.client_feedback_application D/request: starting pre exe
04-29 15:13:09.777 19793-20440/com.example.somya.client_feedback_application D/request: starting
04-29 15:13:12.101 19793-20440/com.example.somya.client_feedback_application W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
04-29 15:13:12.101 19793-20440/com.example.somya.client_feedback_application W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
04-29 15:13:12.101 19793-20440/com.example.somya.client_feedback_application W/System.err: at com.example.somya.client_feedback_application.JSONParser.makeHttpRequest(JSONParser.java:66)
04-29 15:13:12.117 19793-20440/com.example.somya.client_feedback_application W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
04-29 15:13:12.125 19793-20440/com.example.somya.client_feedback_application W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
04-29 15:13:12.125 19793-20440/com.example.somya.client_feedback_application W/System.err: at com.example.somya.client_feedback_application.JSONParser.makeHttpRequest(JSONParser.java:66)
04-29 15:13:12.133 19793-20440/com.example.somya.client_feedback_application W/System.err: at com.example.somya.client_feedback_application.JSONParser.makeHttpRequest(JSONParser.java:127)
04-29 15:13:12.141 19793-19793/com.example.somya.client_feedback_application D/request: starting post
04-29 15:13:24.193 77-77/? W/Genyd: Can't parse request
Login.java活动
public class Login extends Activity {
AutoCompleteTextView UsernameEt;
EditText PasswordEt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
UsernameEt = (AutoCompleteTextView) findViewById(R.id.email);
PasswordEt = (EditText) findViewById(R.id.password);
}
class PostAsync extends AsyncTask<String, String, JSONObject> {
JSONParser jsonParser = new JSONParser();
private ProgressDialog pDialog;
private static final String LOGIN_URL = "http://10.0.3.2:8080/login2.php";
private static final String TAG_SUCCESS = "success";
private static final String TAG_MESSAGE = "message";
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(Login.this);
pDialog.setMessage("Attempting login...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
Log.d("request", "starting pre exe");
}
@Override
protected JSONObject doInBackground(String... args) {
try {
HashMap<String, String> params = new HashMap<>();
params.put("name", args[0]);
params.put("password", args[1]);
Log.d("request", "starting");
JSONObject json = jsonParser.makeHttpRequest(
LOGIN_URL, "POST", params);
if (json != null) {
Log.d("JSON result", json.toString());
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(JSONObject json) {
int success = 0;
String message = "";
Log.d("request", "starting post");
if (pDialog != null && pDialog.isShowing()) {
pDialog.dismiss();
}
if (json != null) {
Toast.makeText(Login.this, json.toString(),
Toast.LENGTH_LONG).show();
try {
success = json.getInt(TAG_SUCCESS);
message = json.getString(TAG_MESSAGE);
} catch (JSONException e) {
e.printStackTrace();
}
}
if (success == 1) {
Log.d("Success!", message);
Intent intent = new Intent(Login.this,Feedback_Form.class);
startActivity(intent);
Log.d("request", "success 1");
}else{
Log.d("Failure", message);
}
}
}
public void OnLogin(View view) {
String username = UsernameEt.getText().toString();
String password = PasswordEt.getText().toString();
new PostAsync().execute(username, password);
}
}