Android HttpPost возвращает 500 через Yii Framework - PullRequest
1 голос
/ 22 февраля 2012

У меня есть серверное приложение, которое работает на Yii Framework.Я хочу достичь базы данных (MySQL) с Yii на Android.

Поэтому я отправляю сообщение от клиента так:

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("myurl/reach");

try {
    List<NameValuePair> nmp = new ArrayList<NameValuePair>();
    ResponseHandler<String> responseHandler=new BasicResponseHandler();

    // Parameters are here 
    // nmp.add(new BasicNameValuePair("name", "value"));

    httpPost.setEntity(new UrlEncodedFormEntity(nmp));
    String rs = httpClient.execute(httpPost, responseHandler);
} catch (ClientProtocolException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Вот Yii's urlManager rule:

'/reach' => 'site/reach',

И наконец actionReach() метод siteController:

if(Yii::app()->request->isPostRequest)
{
    // Reach MySQL 
} else
{
    $this->redirect(Yii::app()->homeUrl);   
}

Когда я пытался запустить приложение, получаю org.apache.http.client.HttpResponseException: Internal Server Error

Вот весь стек:

02-22 01:11:18.803: W/System.err(3924): org.apache.http.client.HttpResponseException: Internal Server Error
02-22 01:11:18.823: W/System.err(3924):     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71)
02-22 01:11:18.823: W/System.err(3924):     at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59)
02-22 01:11:18.823: W/System.err(3924):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
02-22 01:11:18.823: W/System.err(3924):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
02-22 01:11:18.828: W/System.err(3924):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
02-22 01:11:18.828: W/System.err(3924):     at com.app.myapp.PostActivity$postInfoTask.doInBackground(PostActivity.java:175)
02-22 01:11:18.828: W/System.err(3924):     at com.app.myapp.PostActivity$postInfoTask.doInBackground(PostActivity.java:1)
02-22 01:11:18.828: W/System.err(3924):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
02-22 01:11:18.833: W/System.err(3924):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-22 01:11:18.833: W/System.err(3924):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-22 01:11:18.833: W/System.err(3924):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
02-22 01:11:18.833: W/System.err(3924):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
02-22 01:11:18.838: W/System.err(3924):     at java.lang.Thread.run(Thread.java:1096)

Последний, но непо крайней мере, когда я изменяю мой URL reach/ на reach, ошибки нет, но Yii возвращает вывод html домашней страницы, даже если я уже писал.

Чего мне не хватает?Это около .htaccess или как?

1 Ответ

2 голосов
/ 01 марта 2012

Я нашел ответ после долгих исследований.К сожалению, .htaccess как-то блокирует $_POST.Поэтому я решил перенести свое действие в существующий контроллер , который уже работает хорошо .

Итак, сначала изменил мои правила маршрутизации следующим образом:

'reach/' => 'existed/reach',

И в existedController я написал новое действие с именем reachAction:

if(Yii::app()->request->isPostRequest)
{
    // MySQL Insert
}

Thisесли заявление в порядке.Наконец, я получил экземпляр от моей модели и использовал $model->save();

Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...