Java android在外部数据库中设置数据
我想用android应用程序在外部mysql数据库中写入数据 本课程适用于:Java android在外部数据库中设置数据,java,android,mysql,Java,Android,Mysql,我想用android应用程序在外部mysql数据库中写入数据 本课程适用于: public class SendingData extends AppCompatActivity { Intent intent = null; private class LoadingDataURL extends AsyncTask<String, String, JSONArray> { @Override protected JSONArray doInBackgr
public class SendingData extends AppCompatActivity {
Intent intent = null;
private class LoadingDataURL extends AsyncTask<String, String, JSONArray> {
@Override
protected JSONArray doInBackground(String... params) {
URL url;
HttpURLConnection urlConnection = null;
JSONArray response = new JSONArray();
try {
url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();
String responseString = readStream(urlConnection.getInputStream());
intent = new Intent(SendingData.this, Overview.class);
startActivity(intent);
response = new JSONArray(responseString);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlConnection != null)
urlConnection.disconnect();
}
return response;
}
private String readStream(InputStream in) {
BufferedReader reader = null;
StringBuffer response = new StringBuffer();
try {
reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String line = "";
while ((line = reader.readLine()) != null) {
response.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response.toString();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loading_data);
String firstname = "Max";
String secondname= "Mustermann";
LoadingDataURL client = new LoadingDataURL();
client.execute("https://domain.com/index.php?"+
"fristname="+fristname+
"&secondname="+secondname);
}
}
公共类发送数据扩展AppCompating活动{
意向=无效;
私有类LoadingDataURL扩展异步任务{
@凌驾
受保护的JSONArray doInBackground(字符串…参数){
网址;
HttpURLConnection-urlConnection=null;
JSONArray响应=新的JSONArray();
试一试{
url=新url(参数[0]);
urlConnection=(HttpURLConnection)url.openConnection();
int responseCode=urlConnection.getResponseCode();
字符串responseString=readStream(urlConnection.getInputStream());
intent=新的intent(SendingData.this、Overview.class);
星触觉(意向);
响应=新JSONArray(响应限制);
}捕获(例外e){
e、 printStackTrace();
}最后{
if(urlConnection!=null)
urlConnection.disconnect();
}
返回响应;
}
私有字符串读取流(输入流输入){
BufferedReader reader=null;
StringBuffer响应=新的StringBuffer();
试一试{
reader=新的BufferedReader(新的InputStreamReader(在“UTF-8”中));
字符串行=”;
而((line=reader.readLine())!=null){
响应。追加(行);
}
}捕获(IOE异常){
e、 printStackTrace();
}最后{
if(读卡器!=null){
试一试{
reader.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
返回response.toString();
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.loading_数据);
String firstname=“Max”;
字符串secondname=“Mustermann”;
LoadingDataURL客户端=新建LoadingDataURL();
client.execute(“https://domain.com/index.php?"+
“fristname=“+fristname+
“&secondname=“+secondname”);
}
}
我的问题是,如果在我的字符串(fristname,secondname)中是&或?或任何特殊字符,则无法正确保存条目。
有什么想法吗?:) 使用URLEncoder类 请试试这个
String fn = URLEncoder.encode(fristname, "utf-8");
String sn = URLEncoder.encode(secondname, "utf-8");
LoadingDataURL client = new LoadingDataURL();
client.execute("https://domain.com/index.php?"+
"fristname=" + fn + "&secondname=" + sn);
注意:不要对完整url进行编码,只对参数值进行编码。为什么不在将其添加到url之前对其进行编码?如何进行?这是我第一次:)请看我的答案。你可能会看到这个