Я делаю регистрационную форму. У меня есть два класса: ClientServer.java
и JSONParser.java
ClientServer.java:
package com.example.mapsdemo; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class Clientserver extends Activity { EditText username,email,password; Button signup,intent; String mpostusername,mpostpassword,mpostemail; private static final String TAG_SUCCESS = "success"; JSONParser jsonParser = new JSONParser(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_clientserver); username = (EditText) findViewById(R.id.username); email = (EditText) findViewById(R.id.email); password = (EditText) findViewById(R.id.password); signup = (Button)findViewById(R.id.signup); intent = (Button)findViewById(R.id.go); //Setup the Button's OnClickListener signup.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Get the data new CreateNewAccount().execute(); Log.d("my", "in onclick...create new account executed"); } }); intent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent i = new Intent(Clientserver.this,MainActivity.class); startActivity(i); } }); } class CreateNewAccount extends AsyncTask<String, String, String> { /** * Before starting background thread Show Progress Dialog * */ /** * Creating product * */ protected String doInBackground(String... args) { Log.d("my", "in doInBackground()"); mpostusername = username.getText().toString(); mpostemail = email.getText().toString(); mpostpassword = password.getText().toString(); Log.d("my", "getting inputs is executed"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username",mpostusername)); params.add(new BasicNameValuePair("email",mpostemail)); params.add(new BasicNameValuePair("password",mpostpassword)); Log.d("my", "parameter adding executed"); JSONObject json = jsonParser.makeHttpRequest("http://<ip_address>/android_connect/register.php","POST", params); if(json!=null){ // do something Log.d("my", "http request made successfully"); try { int success = json.getInt(TAG_SUCCESS); Log.d("my", "JSON tag_success is working"); if (success == 1) { Log.d("my", "in success=1"); // successfully created product Intent i = new Intent(getApplicationContext(), MainActivity.class); startActivity(i); // closing this screen finish(); } else { Log.d("my", "In else"); } } catch (JSONException e) { e.printStackTrace(); } } return null; } } }
JSONParser.java :
package com.example.mapsdemo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET mehtod public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try { // check for request method if(method.equals("POST")){ // request method is POST // defaultHttpClient Log.d("my", "method equals POST is working"); DefaultHttpClient httpClient = new DefaultHttpClient(); Log.d("my", "HTTp client is working"); HttpPost httpPost = new HttpPost(url); Log.d("my", "HTTp post is working"); httpPost.setEntity(new UrlEncodedFormEntity(params)); Log.d("my", "url encoded"); HttpResponse httpResponse = httpClient.execute(httpPost); Log.d("my", "HTTp response is working"); HttpEntity httpEntity = httpResponse.getEntity(); Log.d("my", "HTTp entity is working"); is = httpEntity.getContent(); Log.d("my", "getcontent is working"); }else if(method.equals("GET")){ // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } }
db_connect.php
<?php $connection = mysql_connect('http://xxx.xxx.xxx.xx/phpmyadmin', 'xxxx', 'xxxxx'); if (!$connection){ die("Database Connection Failed" . mysql_error()); } $select_db = mysql_select_db('accountsb'); if (!$select_db){ die("Database Selection Failed" . mysql_error()); }
register.php
<?php require('db_connect.php'); $response = array(); $username= $_POST['username']; $email = $_POST['email']; $password = $_POST['password']; $query = "INSERT INTO `account` (username,email,password) VALUES ('$username', '$email', '$password')"; $result = mysql_query($query); if($result){ $response["success"] = 1; $response["message"] = "account successfully created."; // echoing JSON response echo json_encode($response); } else { $response["success"] = 0; $response["message"] = "Oops! An error occurred."; // echoing JSON response echo json_encode($response); } ?>
ОШИБКА:
0-06 12: 16: 45.340: E / JSON Parser (8630): Ошибка анализа данных org.json.JSONException: Значение
Вот мой журнал с фильтром logcat:
10-06 12:31:09.800: D/my(11813): in onclick...create new account executed 10-06 12:31:09.800: D/my(11813): in doInBackground() 10-06 12:31:09.800: D/my(11813): getting inputs is executed 10-06 12:31:09.800: D/my(11813): parameter adding executed 10-06 12:31:09.800: D/my(11813): method equals POST is working 10-06 12:31:09.800: D/my(11813): HTTp client is working 10-06 12:31:09.800: D/my(11813): HTTp post is working 10-06 12:31:09.800: D/my(11813): url encoded 10-06 12:31:12.090: D/my(11813): HTTp response is working 10-06 12:31:12.090: D/my(11813): HTTp entity is working 10-06 12:31:12.090: D/my(11813): getcontent is working
ПРИМЕЧАНИЕ. 1. Я видел много похожих вопросов о SO и пробовал много решений, но он не работал после пробуждения около 2 часов. Итак, plz не помечен как help dulicate.plz.