2014-01-25 2 views
0

Я искал какое-то время, но пока не нашел решение. Я отправляю httppost в свой php-файл, который затем сохраняет его в моей базе данных mysql. Но когда я проверяю базу данных, я вижу пустое сообщение. Я вижу, что он вставил запись, но значения пустые. Я проверил свой php-код, и если я вручную проведу URL-адрес с информацией, которую он помещает в базу данных. Мой logcat не показывает ошибок.Httppost mysql пуст

public class Add extends Activity implements View.OnClickListener 
{ 
/** Called when the activity is first created. */ 
private Button add_btn; 
EditText name; 
EditText addy; 
EditText hours; 
EditText desc; 
TextView error; 
List<NameValuePair> nameValuePairs; 
InputStream is; 

    @Override 
public void onCreate(Bundle savedInstanceState) 
{ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.add); 

     add_btn = (Button)findViewById(R.id.add_btn); 
     add_btn.setOnClickListener((OnClickListener) this); 

     name = (EditText)findViewById(R.id.action_name); 
     addy = (EditText)findViewById(R.id.action_addy); 
     hours = (EditText)findViewById(R.id.action_hours); 
     desc = (EditText)findViewById(R.id.action_desc); 
     error = (TextView)findViewById(R.id.error_text); 
} 

public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.mapnav, menu); 
    return true; 
} 

public void onClick(View v) 
{ 
    if(v == add_btn) 
    { 
     if(name.getText().length()== 0) 
     { 
      error.setText("You Must enter a bussiness name."); 
     } 
     else if(desc.getText().length()== 0) 
     { 
      error.setText("Please enter a short description. I.E. Beer Bar or Dance Club"); 
     } 
     else 
     { 
      new Connect().execute(); 

      name.setText(""); 
      addy.setText(""); 
      hours.setText(""); 
      desc.setText(""); 
     } 
    } 
} 

private class Connect extends AsyncTask<Void, Void, Void> 
{ 

    @Override 
    protected void onPreExecute() 
    { 
     super.onPreExecute();  
    } 

    @Override 
    protected Void doInBackground(Void... params) 
    {   
     try 
     { 
      String a = name.getText().toString().trim(); 
      String b = addy.getText().toString().trim(); 
      String c = hours.getText().toString().trim(); 
      String d = desc.getText().toString().trim(); 

      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new 
        HttpPost("http://www.website.com/phpfile.php"); 

      nameValuePairs = new ArrayList<NameValuePair>(4); 
      nameValuePairs.add(new BasicNameValuePair("bname", a)); 
      nameValuePairs.add(new BasicNameValuePair("baddy", b)); 
      nameValuePairs.add(new BasicNameValuePair("bhours", c)); 
      nameValuePairs.add(new BasicNameValuePair("bdesc", d)); 

      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_16)); 

      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
      Log.e("Server Response: ", " " + response); 
     } 
     catch(Exception e) 
     { 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
      //error.setText("Connection error"); 
     } 
     return null; 
    } 
} 
} 
+0

Ваш сервер ожидает, что параметры тела сообщения будут закодированы как UTF_16? Как правило, это UTF_8, я считаю, может быть или не быть проблемой. РЕДАКТИРОВАТЬ: Думаю, я заметил эту проблему, посмотрите ниже, чтобы опубликовать ответ. – Ryan

+0

Отлично .. Это было решение. Большое спасибо, я искал часы. – Jayce

ответ

0

Как указано в комментариях, тело сообщения должно быть закодировано как UTF_8.

+0

Ryan это была ваша первая вещь об utf 8. Отредактируйте свой ответ на это, и я приму это. Еще раз спасибо. – Jayce

+0

Отлично, рад, что он разрешен. – Ryan

Смежные вопросы