[英]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.