简体   繁体   English

我想在 Android 中发送一个键值并作为回报得到一个 JSON 数组但没有得到响应

[英]I want to send a key value in Android and in return get a JSON array but getting no response

Main activity :主要活动 :

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Base64;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
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.JsonArrayRequest;
import com.android.volley.toolbox.Volley;
import com.gc.materialdesign.views.Button;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


import android.app.ProgressDialog;

import junit.framework.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;

public class GuestProfile extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.guest_profile);

executeAsyncTask();

}


    private class GetUserBooks extends AsyncTask<Hashtable<String,String>,Void,String>{

        @Override
        protected String doInBackground(Hashtable<String,String>... params) {
            Hashtable ht=params[0];

            String json=HelperHttp.getJSONResponseFromURL(URL_BOOKS_FOR_OWNER, ht);
            if(json!=null) parseJsonString(deptList,json);
            else{
                return "Invalid ";
            }
            return "SUCCESS";
        }

        protected void parseJsonString(ArrayList<Book> deptList,String json){
            try {
                JSONArray array=new JSONArray(json);
                for(int i=0;i<array.length();i++){
                    JSONObject j=array.getJSONObject(i);
                    Book d=new Book();


//                    d.dept=j.optString("dept","");
//                    d.dept_id=j.optString("dept_id","");
//                    deptList.add(d);

                    d.setTitle(j.optString("BTitle",""));
                    d.setThumbnailUrl(j.optString("BCoverpath", ""));
                    d.setAuthor(j.optString("BAuthor", ""));
                    d.setEdition(j.optString("BEdition", ""));
                    d.setCategory(j.optString("Bcategory", ""));
                    d.setLanguage(j.optString("BLanguage", ""));
                    d.setDescription(j.optString("BDescription", ""));
                    d.setCover(j.optString("BCover", ""));
                    d.setOwner(j.optString("UserFN", ""));


                    deptList.add(d);
                }

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

        }


        @Override
        protected void onPostExecute(String result){

            if(result=="success")
            {
                Toast.makeText(GuestProfile.this, "Success", Toast.LENGTH_SHORT).show();
                CustomListAdapter5 adapter=new CustomListAdapter5(GuestProfile.this,R.id.wmaker,deptList);
                ListView listv=(ListView)findViewById(R.id.list);
                listv.setAdapter(adapter);
            }
            else{}
        }


    }



    private void executeAsyncTask(){
        Hashtable<String,String> ht=new Hashtable<String,String>();
        GetUserBooks async=new GetUserBooks();
        ht.put("usid", "27");
        Hashtable[] ht_array={ht};
        async.execute(ht_array);
    }

} }

Book Class :书类:

public class Book {

    private String title, thumbnailUrl,author,edition,language,description,owner,category,cover;

    public Book(String title, String thumbnailUrl, String author, String edition) {
        this.title = title;
        this.thumbnailUrl = thumbnailUrl;
        this.author = author;
        this.edition = edition;
    }

    public Book() {

    }

    public void setCover(String cover) {
        this.cover = cover;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setThumbnailUrl(String thumbnailUrl) {
        this.thumbnailUrl = thumbnailUrl;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public void setEdition(String edition) {
        this.edition = edition;
    }


    public String getLanguage() {
        return language;
    }

    public String getDescription() {
        return description;
    }

    public String getCover() {
        return cover;
    }

    public String getOwner() {
        return owner;
    }

    public String getCategory() {
        return category;
    }

    public String getEdition() {
        return edition;
    }

    public String getAuthor() {
        return author;
    }

    public String getTitle() {
        return title;
    }

    public String getThumbnailUrl() {
        return thumbnailUrl;
    }
}

httphelper class : httphelper 类:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;

import android.util.Log;


public class HelperHttp {


    public static HttpClient httpclient;

    private static List<NameValuePair> buildNameValuePair(Hashtable<String, String> httpPost){
        if(httpPost==null) return null;

        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        Enumeration<String> keys=httpPost.keys();
        while(keys.hasMoreElements()){
            String key = (String)keys.nextElement();
            String value = (String)httpPost.get(key);
            BasicNameValuePair nv=new BasicNameValuePair(key,value);
            nvps.add(nv);
        }

        return nvps;
    }


    private static String buildGetUrl(List<NameValuePair> params, String url){
        String paramString = URLEncodedUtils.format(params, "utf-8");
        if(!url.endsWith("?"))
            url += "?";

        url+=paramString;
        return url;
    }

    public static DefaultHttpClient getThreadSafeClient() {
        if (httpclient != null)
            return (DefaultHttpClient) httpclient;
        HttpParams params = new BasicHttpParams();
        ConnManagerParams.setMaxTotalConnections(params, 100);
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);

        // Create and initialize scheme registry
        SchemeRegistry schemeRegistry = new SchemeRegistry();
        schemeRegistry.register(
                new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));


        ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
        httpclient = new DefaultHttpClient(cm, params);

        return (DefaultHttpClient) httpclient;
    }



    public static String getJSONResponseFromURL(String url, Hashtable<String, String> httpGetParams){
        String json_string="";
        List<NameValuePair> nvps=buildNameValuePair(httpGetParams);
        url=buildGetUrl(nvps,url);
        System.out.println("URL==>"+url);
        InputStream is = null;
        try{
            HttpGet httpget = new HttpGet(url);
            HttpResponse response = getThreadSafeClient().execute(httpget);

            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            BufferedReader reader=new BufferedReader(new InputStreamReader(is),8192);
            String line=null;
            while((line=reader.readLine())!=null){
                json_string=json_string+line;
            }
            response.getEntity().consumeContent();
            System.out.println("Json Response==>"+json_string);
        }catch(Exception e){
            Log.e("log_tag", "Error in http connection"+e.toString());
            return null;
        }
        return json_string;
    }



}

php code :代码:

<?php

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

require_once('init.php');

$UserID=$_POST["usid"];


$UserIDval=intval($UserID);

$response = array();

$result = mysqli_query($conn,"SELECT BID,BTitle,BAuthor,Bcategory,BLanguage,BEdition,BDescription,BCover,BCoverpath,UserFN FROM book INNER JOIN user ON user.UserID=book.BOwnerID WHERE BOwnerID = '$UserIDval' ") or die(mysql_error());



    while ($row = mysqli_fetch_array($result)) {


        $books["BID"] = $row["BID"];
        $book["BTitle"] = $row["BTitle"];
        $book["BAuthor"] = $row["BAuthor"];
        $book["BCoverpath"] =$row["BCoverpath"];
        $book["Bcategory"] = $row["Bcategory"];
        $book["BLanguage"] = $row["BLanguage"];
        $book["BDescription"] = $row["BDescription"];
        $book["BCover"] = $row["BCover"];
    $book["BEdition"] = $row["BEdition"];
        $book["UserFN"] = $row["UserFN"];



           array_push($response, $book);

    }



    echo json_encode($response, JSON_UNESCAPED_SLASHES,JSON_PRETTY_PRINT);

?>

I am excuting the method but I'm not getting any response from the server.我正在执行该方法,但没有收到服务器的任何响应。 .... [] empty array only. .... [] 仅空数组。 I am following this tutorial我正在关注本教程

http://mobisys.in/blog/2012/01/parsing-json-from-url-in-android/ http://mobisys.in/blog/2012/01/parsing-json-from-url-in-android/

In PHP, replace $UserID=$_POST["usid"];在 PHP 中,替换$UserID=$_POST["usid"]; with $UserID=$_GET["usid"]; $UserID=$_GET["usid"];

You are sending the param in URL query and perform a HTTP GET request.您正在 URL 查询中发送参数并执行 HTTP GET 请求。

Or as an alternative in Android, form a proper POST request, as expected by PHP.或者作为 Android 中的替代方案,按照 PHP 的预期形成正确的 POST 请求。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM