2012-02-21 8 views
1

私はYii Frameworkで動作するサーバー側アプリケーションを持っています。私はAndroidにYiiとデータベース(MySQL)に行きたいです。Android HttpPostはYii Frameworkを介して500を返します

だから私はこのように、クライアントからの投稿:

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

そして最後にsiteControlleractionReach()方法:

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

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のurlManagerルールがありますすべてのスタック私はここで

org.apache.http.client.HttpResponseException: Internal Server Errorをのgettin、アプリケーションを実行しようとしている。

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) 

なく、少なくとも最後に、私はエラーがありません私のURLreach/reachに変更するが、YiiはさえホームページのHTML出力を返すとき私がすでに投稿した場合。

私には何が欠けていますか?それは約.htaccessか何ですか?

+1

ブラウザでyii URLを試して、期待される出力を確認する必要があります。 – Arfeen

+0

とサーバー上のPHPエラーを確認してください。私がエラー500を取得するときには、そのほとんどはPHPエラー –

+0

また、あなたのYiiルートを確認してください。 「リーチ」に特別なルールはありますか?また、ApacheログとPHPエラーログをテーリングしてみてください。 –

答えて

2

私は長い研究の後に答えを見つけました。残念ながら、.htaccessは何とかブロックしています$_POSTだから私は自分の行動を存在するコントローラーに移すことに決めました。これは既にでもよく、で動作します。

だから、最初にように私ルーティングルールを変更:

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

そしてexistedControllerに、私はreachActionという名前の新しいアクション書きました:文が罰金の場合

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

これを。最後に、モデルからインスタンスを取得して使用しました$model->save();

それだけです。

関連する問題