【问题标题】:trying to get array from php and store it in java,android试图从 php 获取数组并将其存储在 java、android
【发布时间】:2013-04-26 10:43:39
【问题描述】:

我有一个连接到数据库并获取数据的 php 文件,现在我希望将此数据发送到我的 java 代码并存储为一个数组,用于连接到 php 并检索我正在使用的结果 AsyncHttpClient 现在在 AsyncHttpClient 中,它们是一个 func onSucess,它以字符串值作为参数,所以来自 php 的任何东西都存储为字符串。我希望它是数组.. 请给我建议一个方法,要么得到一个数组而不是字符串 以下是我的代码。

 public void func3(View view)throws Exception
{
    AsyncHttpClient client = new AsyncHttpClient();
    RequestParams rp = new RequestParams();
    rp.put("pLat", "select * from iwmp_state");
    client.post("http://10.0.2.2/conc2.php", rp, newAsyncHttpResponseHandler() {
        public final void onSuccess(Array response) {
            // handle your response here
            //tx.setText(response.toString());

        }

        @Override
        public void onFailure(Throwable e, String response) {
            // something went wrong
            tx.setText(response.toString());
        }               
    });
}

我得到了一个 php 文件,它回显了一个数组 $row

<?php
 // attempt a connection
 $dbh = pg_connect("host=10.22.35.11 dbname=iwmp_dev2 user=postgres "); 
 if (!$dbh) {
     die("Error in connection: " . pg_last_error());
 }       

 // execute query
 $sql = $_POST['pLat'];
 $result = pg_query($dbh, $sql);
 if (!$result) {
     die("Error in SQL query: " . pg_last_error());
 }       
$array = array();
 // iterate over result set
 // print each row
 while ($row = pg_fetch_array($result)) {
    $i++;
echo $row[0];
 }       

 // free memory
 pg_free_result($result);       

 // close connection
 pg_close($dbh);
 ?>  

php echos 是数组,onSuccess 作为参数是字符串。怎么办!

【问题讨论】:

  • 响应在哪里?在杰森中得到它并添加到列表中
  • JSON - 没有别的办法
  • JSON 是在 php 中编码数据的标准方式。您可以通过 ksop、xmletc 发送
  • 如果可能,请发布一个示例。谢谢你。并且响应只是一个字符串。我不知道 onSuccess 内部的内部工作是否正在进行 .. 请帮助先生。谢谢

标签: php android arrays string


【解决方案1】:

这里,我只是展示一个简单的演示。你必须根据你的要求进行更新。

PHP 端

创建简单的PHP Array,更多细节click here

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++)
  {
  echo $cars[$x];
  echo "<br>";
  }
 echo json_encode($cars); 
 exit;
?>

Android 端

现在如何在android中读取PHP数组?

String String_Response = ""; // this is your web response

创建一个ArrayList

    ArrayList<String> User_List = new ArrayList<String>();


                  try
              {
            JSONArray jArray = new JSONArray(String_Response);
            for (int i = 0; i < jArray.length(); i++)
            {
                       JSONObject json_data = jArray.getJSONObject(i);                                                        
               User_List.add(json_data.getString("your_json_obj"));
            }

               } 
                  catch (Exception e)
              {
            Log.e(TAG, "" + e);
               }

还可以查看下面的链接,您将更了解如何从 android 向 php 发送和接收数据。

Android + PHP Communication Example

【讨论】:

  • 先生感谢这个例子。你的考试也对我有用.. 现在我也有 json.. thnx.. 在此之前我使用 IMPLODE AND SPLIT() 做了同样的事情.. 但是对于这个来说谢谢。
  • 随时准备提供帮助。如果对您有好处,请接受答案
  • 请告诉我如何接受 ans 以及如何投票赞成 ans。同样在上面的代码中,“your_json_obj”是否实现了,它是 string_response.. 是从 php.. cuming 时存储 json 对象的那个吗?
  • your_json_obj 是您的JSON_TAG,分配给阅读关键字。您会发现制作简单的网络服务。所以你会明白的。要接受答案,你只需要点击右箭头,这样它就会变成绿色,然后 clcik ` ^ ` 进行投票
  • 但是,您还没有接受答案,请为其他新人做得好
【解决方案2】:

我很难理解您希望达到的目标,但也许我可以提供一些帮助: 将您的 php 数组插入一个字符串 (http://php.net/manual/en/function.implode.php),然后至少您可以看到您返回的内容并可能在客户端重新处理它?

【讨论】:

  • 知道了,我们可以做的是在我们的 php 中使用 IMPLODE 函数,并在每个数组值后添加 (,),然后将其作为字符串传递。在java代码中使用它之后。 split(",") 函数并将它们存储在一个数组中。对我来说工作得很好。不需要json:P
【解决方案3】:

知道了,我们可以做的是在我们的 php 中使用 IMPLODE 函数,并在每个数组值之后添加 (,) 然后让它作为字符串传递。 在java代码中使用它之后。 split(",") String 的 func 并将它们存储在一个数组中。

对我来说工作得很好。不需要json:P

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多