0

ユーザー名パスワードを比較した後にエラーまたは成功を返すサーバー上に書かれたPHPスクリプトのURLを呼び出したいのですが、送信ボタンをクリックするとこのエラーが表示されます

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);
?>
4

3 に答える 3

0

これは解析エラーです。これは、ボレーがサーバーからの応答を解析できないことを意味します。応答文字列を確認してください。適切な JSON 形式であるかどうかを確認してください。適切な JSON であるかどうかは、ここで応答文字列を確認できます。

于 2016-03-03T06:55:18.740 に答える
0

PHP SCRIPTでは、次のようなことを行います..

    $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);
于 2016-03-03T08:38:59.603 に答える
0

i know this problem. it happens to me once. Use StringRequest instead of JsonObjectRequest . this is volly bug. params are not passing in JsonObjectRequest .

please refer this link for more Volley JsonObjectRequest Post request not working

you will get Response as String then convert it into JSONObject.

于 2016-03-03T06:58:17.740 に答える