2017-01-28 12 views
0

私のアンドロイドアプリでは、PHPのスクリプトを使用してデータベースからデータを挿入します。 PHPスクリプトがあります。データはデータベースから正常にフェッチされ、データベースに挿入されますが、アンドロイド側ではjava.lang.String型のエラー値配列(2)が返されます。Org.json.JSONExceptionを取得する:java.lang.String型の値の配列(2)をJSONObjectに変換できません

アンドロイド出力で

WebService.php 
<?php 
require_once 'update_user_info.php'; 
$db = new update_user_info(); 
// json response array 
$response = array("error" => FALSE); 
var_dump($_POST); 
if (isset($_POST['list_name']) && isset($_POST['list_title'])) { 

// receiving the post params 
$list_name = $_POST['list_name']; 
$list_title = $_POST['list_title']; 

    // create a new user 
    $user = $db->StoreListInfo($list_name,$list_title); 
    if ($user) { 
     // user stored successfully 
     $response["error"] = FALSE; 
     $response["user"]["list_name"] = $user["list_name"]; 
     $response["user"]["list_title"] = $user["list_title"]; 
     echo json_encode($response); 
    } else { 
     // user failed to store 
     $response["error"] = TRUE; 
     $response["error_msg"] = "Unknown error occurred in registration!"; 
     echo json_encode($response); 
    } 

} else { 
$response["error"] = TRUE; 
$response["error_msg"] = "Required parameters (listname,listtitle) is missing!"; 
echo json_encode($response); 
} 

?> 

list.java 

    private void createListUser(final String list_name, final String list_title) { 
    // Tag used to cancel the request 
     String cancel_req_tag = "createlist"; 

    progressDialog.setMessage("Adding you ..."); 
    showDialog(); 

    StringRequest strReq = new StringRequest(Request.Method.POST, 
      URL_FOR_LIST, new Response.Listener<String>() { 

     @Override 
     public void onResponse(String response) { 
      Log.d(TAG, "CreateList Response: " + response.toString()); 
      hideDialog(); 

      try { 
       JSONObject jObj = new JSONObject(response); 
       boolean error = jObj.getBoolean("error"); 
       // boolean status= jObj.getBoolean("status"); 

       if (!error) { 
        Intent intent = new Intent(getActivity(), 
          EventDetailActivity.class); 
        startActivity(intent); 

       } else { 

        String errorMsg = jObj.getString("error_msg"); 
        Toast.makeText(getApplicationContext(), 
          errorMsg, Toast.LENGTH_LONG).show(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "List Error: " + error.getMessage()); 
      Toast.makeText(getApplicationContext(), 
        error.getMessage(), Toast.LENGTH_LONG).show(); 
      hideDialog(); 
     } 
    }) { 
     @Override 
     protected Map<String, String> getParams() { 
      // Posting params to register url 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("list_name", list_name); 
      params.put("list_title", list_title); 
      return params; 
     } 
    }; 
    // Adding request to request queue 
    AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(strReq, cancel_req_tag); 
} 

ウェブservice.phpで呼び出され

function.php 

public function StoreListInfo($list_name,$list_title) 
{ 
    $stmt = $this->conn->prepare("INSERT INTO ibeSaveList(list_name,list_title) VALUES(?,?)"); 
    $stmt->bind_param("ss", $list_name, $list_title); 
    $result = $stmt->execute(); 
    $stmt->close(); 

    if($result) 
    { 
     $stmt = $this->conn->prepare("SELECT list_name,list_title FROM ibeSaveList WHERE list_title = ?"); 
     $stmt->bind_param("s",$list_title); 
     $stmt->execute(); 
     $stmt->bind_result($token2,$token3); 
     while($stmt->fetch()) 
     { 
      $user["list_name"]=$token2; 
      $user["list_title"]=$token3; 
     } 
     $stmt->close(); 
     return $user; 
    } 
    else 
    { 
     return false; 
    } 
} 

StoreListInfo() enter image description here

答えて

0

あなたはアンドロイド側で取得している応答が有効であるとは思えません。応答はちょうどこれでなければなりません:{"error":false,"user":{"list_name":"test","list_title":"test"}}

あなたが取得している応答はこれです:

array(2) { 
    ["list_name"] => 
    string(4) "test" 
    ["list_title"] => 
    string(4) "test" 
} 
{"error":false,"user":{"list_name":"test","list_title":"test"}} 

あなたが取得している応答はちょうどあなたがlogcatで見ることができるように実際の応答の前にいくつかのより多くの情報が含まれています。つまり、あなたはPHP側でいくつかの問題があることを意味します。

array(2) { 
    ["list_name"] => 
    string(4) "test" 
    ["list_title"] => 
    string(4) "test" 
} 

はまた、あなたがこのエコー

header('Content-Type: application/json'); 

チェックを行う前に、コンテンツタイプヘッダーを設定する必要があります:

これはすべきではないReturning JSON from a PHP Script

+0

私が解決しようとしたが、私はしませんでした取得する 。あなたが助けてくれたら、 @Abhishek Jain –

+0

@リチャ、あなたはあなたが応答を送信している部分を含むPHPのコード全体を投稿できますか? –

+0

はい私は関数すなわちstoreListInfo()@Abhishek Jainを投稿します –

関連する問題