我有一个Android应用程序,我需要将一个用户输入的名称(example-paul,john)提交给mysql数据库。为此,我有一个简单的php文件,使用get方法获取名称然后将名称插入mysql表,这在我的浏览器中成功测试了计算机和Android模拟器浏览器。但它不能在Android应用程序中工作。应用程序有一个提交按钮,单击它时应创建链接(例如http://10.0.2.2/project2/signup.php?name=john")并打开HttpURLConnection以使用php脚本将名称添加到数据库。无论我做什么,我似乎无法将输入的名称插入我的数据库。
public void sign_up(View view)
{
EditText newuserET = (EditText) findViewById(R.id.newuserET);
String editTextValue = newuserET.getText().toString();
//Toast.makeText(this, "Signing up...", Toast.LENGTH_SHORT).show();
String link;
String data;
BufferedReader bufferedReader;
String result;
try {
// data = "?name=" + URLEncoder.encode(fullName, "UTF-8");
link = "http://10.0.2.2/project2/signup.php?name=" + editTextValue;
//Toast.makeText(this, link, Toast.LENGTH_SHORT).show();
URL url = new URL(link);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setDoOutput( true );
// return result;
} catch (Exception e)
{
// return new String("Exception: " + e.getMessage());
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
我还在Android清单中添加了以下内容 - 不在应用程序范围内
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
答案 0 :(得分:0)
首先使用android build.Gradle(Module.app)
中的依赖项dependencies{
compile 'com.loopj.android:android-async-http:1.4.9'
}
并同步它。
然后转到脚本文件。
public void Function()
{
link = "http://10.0.2.2/project2/signup.php?name=" + editTextValue;
AsyncHttpClient client = new AsyncHttpClient();
client.get(link, new AsyncHttpResponseHandler()
{
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody)
{
Toast.makeText(getApplicationContext(),"Uploaded",Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error)
{
Toast.makeText(getApplicationContext(),"Error" + error.toString(),Toast.LENGTH_LONG).show();
}
});
}