2016-03-03 27 views
0

我想打电话给的网址,让PHP脚本写在服务器返回我的错误或比较的用户名密码后的成功,但是当我在提交按钮点击它给了我这个错误Android JSONObject请求方法发生错误的POST。 “不能转换为JSONObject的”

com.pace.testformwithonline E/Response error: 
com.android.volley.ParseError: org.json.JSONException: Value Error of type 
java.lang.String cannot be converted to JSONObject 

包com.pace.testformwithonline;

import android.app.Activity; 
import android.app.DownloadManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONException; 
import org.json.JSONObject; 

public class MainActivity extends Activity { 
    private EditText username; 
    private EditText password; 
    private Button btnSubmit; 
    private TextView result; 
    private static final String URL="http://pace-tech.com/nomi/zaigham/android.php"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     username=(EditText)findViewById(R.id.editText_username); 
     password= (EditText) findViewById(R.id.editText_password); 
     btnSubmit=(Button)findViewById(R.id.btn_submit); 
     result=(TextView)findViewById(R.id.text_result); 
     btnSubmit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       result.setText(""); 
      postJsonobjectRequest(URL); 
      } 

     }); 

    } 
    public void postJsonobjectRequest(String url){ 
     JSONObject params=new JSONObject(); 
     RequestQueue queue = Volley.newRequestQueue(getApplicationContext()); 
     try { 
      params.put("username", username.getText().toString()); 
      params.put("password", password.getText().toString()); 
     } 
     catch (JSONException e){ 
     e.printStackTrace(); 
     } 
     JsonObjectRequest jsOBJRequest=new JsonObjectRequest 
       (Request.Method.POST, URL, params, new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 
       // Log.e("Response is",response.toString()); 
       try { 
        Log.e("Response is",response.toString()); 
        String Success = response.getString("Success").toString(); 
        String Message = response.getString("Message").toString(); 
        if(Success=="0") { 
         result.setText(Message); 
        } 
        else { 
         Toast.makeText(getApplicationContext(),Message,Toast.LENGTH_LONG); 
        } 


       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

       Log.e("Response error",error.toString()); 
       result.setText("Error Is :"+ error.toString()); 
      } 
     }); 
     queue.add(jsOBJRequest); 
    } 
} 

这里是PHP脚本

<?php 
$username = "zaigi"; 
$password = "1111"; 

$androidUserName = json_decode($_POST['username']); 
$androidPassword = json_decode($_POST['password']); 

if($androidUserName == $username && $androidPassword == $password){ 
$response = "Correct"; 
}else{ 
$response = "Error"; 
} 
echo json_encode($response); 
?> 
+0

不能完全确定,但它看起来像PHP脚本与刚刚字符串'Error'回应。 – VolkerK

+0

发生此错误,在什么行 –

+0

发布您的logcat。 –

回答

0

这是分析错误,这意味着凌空无法解析,从你的服务器的到来,所以查收的响应串的响应,是它在适当的JSON格式与否?你可以检查你的响应字符串here是否合适的JSON。

0

我知道这个问题。它发生在我身上一次。 使用StringRequest而不是JsonObjectRequest。 这是可怕的错误。 params不通过JsonObjectRequest。

请参见更多 Volley JsonObjectRequest Post request not working

你会得到响应,字符串,则其转换成JSONObject的这个环节。

+0

有太多的错误我无法解决 –

+0

这是正确的! Android代码有错误! JsonObjectRequest有一些无法发布参数的bug。 –

+0

但你仍然可以弄清楚如何创建StringRequest。 PARAMS问题是排球的错误 打开链接的答案 –

0

在PHP脚本做一些这样的事..

$data = file_get_contents('php://input'); 
    $json = json_decode($data); 
    //username and password sent from android 
    $username=$json->{'username'}; 
    $password=$json->{'password'}; 


    $androidUserName = $username; 
    $androidPassword = $password; 

    if($androidUserName == $myusername && $androidPassword == $mypassword){ 
     $response = array('result' => "Correct"); 
    }else{ 
     $response = array('result' => $androidUserName,'password' => $androidPassword); 
    } 
    header('Content-type: application/json'); 
    echo json_encode($response); 
相关问题