gpt4 book ai didi

Android HttpPost 通过 Yii 框架返回 500

转载 作者:行者123 更新时间:2023-11-29 22:12:03 25 4
gpt4 key购买 nike

我有一个服务器端应用程序,它在 Yii Framework 上运行。我想在 Android 上使用 Yii 访问数据库 (MySQL)。

所以我这样从客户发帖:

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 规则:

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

最后是 siteController 上的 actionReach() 方法:

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

当我尝试运行应用程序时,gettin 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)

最后但同样重要的是,当我将 my url reach/ 更改为 reach 时没有错误,但 Yii 返回主页 html 输出,即使我已经发布了。

我错过了什么?是关于 .htaccess 还是什么?

最佳答案

经过长时间的研究,我找到了答案。不幸的是,.htaccess 以某种方式阻止了 $_POST。因此,我决定将我的操作转移到一个现有的 Controller 中,它已经运行良好

因此,首先将我的路由规则更改为:

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

并且在 existedController 中,我编写了名为 reachAction 的新操作:

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

这个 if 语句没问题。最后,我从我的模型中获取了一个实例并使用了 $model->save();

就这些。

关于Android HttpPost 通过 Yii 框架返回 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com