EDIT : 마침내 문제가 어디인지 알아 냈습니다. 이 줄에 IOException이 계속 발생합니다. response = httpClient.execute (httpPost).사용자로부터 서버로 데이터를 보내주고 있습니다.
그러나이 오류의 원인이되는 정상적인 문제 (URL이 잘못되어 온라인에서 검색 한 것과 같은 문제)는 여기에서 문제가되지 않습니다. URL이 정확합니다. 누구든지이 오류가 발생할 수있는 모든 이유를 도울 수 있습니다. 고맙습니다.
이 질문을 여러 번 요청되었습니다 알고, 사실 원래이 작업을 수행하는 방법을 파악하기 위해 그 질문에 주어진 대답 보았다하지만 어떤 이유로 작동하지 않습니다와 나는하지 않습니다 왜 그런지 안다.
사용자가 가입해야하는 앱이 있습니다. 그들이 가입 한 후에 나는 그들이 입력 한 정보를 서버에 보낸다.
안드로이드 코드 :
//This is the method called when user presses submit button. The variables not declared
//are global
public void registerUser(View v){
context = getApplicationContext();
username = ((EditText) this.findViewById(R.id.username)).getText().toString();
email = ((EditText) this.findViewById(R.id.email)).getText().toString();
password=((EditText)this.findViewById(R.id.password)).getText().toString();
String[] params = {username,email,password};
(new SendRegisterInfo(this.getApplicationContext())).execute(params);
Toast t = Toast.makeText(context, "Thank you for Signing up "+username, Toast.LENGTH_SHORT);
t.show();
//Start Main Page Activity. Page they'll see everytime they login
Intent i = new Intent(this,HomeActivity.class);
startActivity(i);
}
public class SendRegisterInfo extends AsyncTask<String,Void,Void>{
private String tag = "SendRegisterInfo";
private InputStream is;
private Context c;
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
public SendRegisterInfo(Context c){
this.c = c;
}
@Override
protected Void doInBackground(String... params) {
String URI="http://www.mysite.com/registerUser.php";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URI);
HttpResponse response;
String username,email,password;
username = params[0];
email = params[1];
password = params[2];
try {
ArrayList<NameValuePair> submit = new ArrayList<NameValuePair>(2);
submit.add(new BasicNameValuePair("username",username));
submit.add(new BasicNameValuePair("email",email));
submit.add(new BasicNameValuePair("password",password));
httpPost.setEntity(new UrlEncodedFormEntity(submit));
response = httpClient.execute(httpPost);
Log.i(tag,response.getStatusLine().toString());
} catch (ClientProtocolException e) {
Log.e(tag, "Error in http connection "+e.toString());
e.printStackTrace();
} catch (IOException e) {
Log.e(tag, "Error in http connection "+e.toString());
e.printStackTrace();
}catch (Exception e){
Log.e(tag, "Error in http connection "+e.toString());
e.printStackTrace();
}
return null;
}
}
매니페스트 파일 :
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
PHP 코드 :
<?php
$username = $_POST["username"];
$email = $_POST["email"];
$pswrd = $_POST["password"];
$score = 0;
$user = "root";
$password="pword";
$database = "databasename";
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die("Unable to Select Database");
$query="INSERT INTO Players VALUES ('','$username','$email','$pswrd','','$score')";
mysql_query($query);
mysql_close();
?>
귀하는이 작동 말하고 그 이유를 몰라? – Jordan
무엇이 작동하지 않습니까? 간단한 양식을 만들고 데이터를 게시하는 경우 코드를 디버깅 해보십시오. PHP 스크립트가 작동합니까? Android가 실제로 콘텐츠를 전송합니까? 오류가 있습니까? – YuviDroid
코드를 빠르게 살펴보면 유일한 문제는 전체 코드를 게시하지 않는 한 UI 스레드에서 네트워크 활동을 수행한다는 것입니다. – YuviDroid