2017-04-17 58 views
1

AnyBody,請解決我的問題。我無法從凌空StringRequest.What任何POST值是在我的代碼問題沒有從排氣字符串獲取JSON POST值請求

這是我的Android代碼

 StringRequest stringRequest = new StringRequest(Request.Method.POST,URL, 
      new Response.Listener<String>() 
      { 
       @Override 
       public void onResponse(String response) 
       { 
        Log.d("response",response); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) 
       { 
        Toast.makeText(PostRequestTest.this, error.toString(), Toast.LENGTH_LONG).show(); 
       } 
      }) 
    { 
     //getaParams function is used to send the values to the server 
     @Override 
     protected Map<String, String> getParams() 
     { 
      Map<String, String> params = new HashMap<>(); 
      params.put("user_name","uname"); 
      Log.d("parameters09876", params.toString()); 
      JSONObject jsonObject = new JSONObject(params); 
      Log.d("jsonRequest",jsonObject.toString()); 
      return params; 
     } 
    }; 
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(
      Config.MY_SOCKET_TIMEOUT_MS, 
      DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

    CustomVolleyRequest.getInstance(this).addToRequestQueue(stringRequest); 
} 

而在我的PHP代碼,我只是打印POST值

<?php echo $_POST['user_name']; ?> 

這裏是我的CustomVolleyRequest

public class CustomVolleyRequest { 
private static CustomVolleyRequest customVolleyRequest; 
private static Context context; 
private RequestQueue requestQueue; 
private ImageLoader imageLoader; 
private CustomVolleyRequest(Context context) { 
    this.context = context ; 
    this.requestQueue = getRequestQueue(); 
    imageLoader = new ImageLoader(requestQueue, 
      new ImageLoader.ImageCache() { 
       private final LruCache<String, Bitmap> 
         cache = new LruCache<String, Bitmap>(20); 
       @Override 
       public Bitmap getBitmap(String url) { 
        return cache.get(url); 
       } 
       @Override 
       public void putBitmap(String url, Bitmap bitmap) { 
        cache.put(url, bitmap); 
       } 
      }); 
} 
public static synchronized CustomVolleyRequest getInstance(Context context) { 
    if (customVolleyRequest == null) { 
     customVolleyRequest = new CustomVolleyRequest(context); 
    } 
    return customVolleyRequest; 
} 
public RequestQueue getRequestQueue() { 
    if (requestQueue == null) { 
     Cache cache = new DiskBasedCache(context.getCacheDir(), 10 * 1024 * 1024); 
     Network network = new BasicNetwork(new HurlStack()); 
     requestQueue = new RequestQueue(cache, network); 
     requestQueue.start(); 
    } 
    return requestQueue; 
} 
public <T> void addToRequestQueue(Request<T> req) 
{ 
    getRequestQueue().add(req); 
} 
public ImageLoader getImageLoader() 
{ 
    return imageLoader; 
} 

}

+0

'Log.d( 「響應」,響應);'什麼是日誌?而你不是發送/接收json –

+0

你的代碼從android側看起來不錯你能告訴我的php代碼 – adam

+0

你是否得到了迴應?請包括它 – 2017-04-17 11:02:01

回答

1

我給你一個建議。使用JsonObjectRequest而不是使用StringRequest

StringRequest:指定一個URL並接收一個原始字符串作爲響應。

JsonObjectRequestJsonArrayRequest(兩個JsonRequest的子類)。指定一個URL並分別獲取JSON對象或數組作爲響應。

TextView mTxtDisplay; 
ImageView mImageView; 
mTxtDisplay = (TextView) findViewById(R.id.txtDisplay); 
String url = "http://my-json-feed"; 

JsonObjectRequest jsObjRequest = new JsonObjectRequest 
    (Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 

@Override 
public void onResponse(JSONObject response) { 
    mTxtDisplay.setText("Response: " + response.toString()); 
} 
}, new Response.ErrorListener() { 

@Override 
public void onErrorResponse(VolleyError error) { 
    // TODO Auto-generated method stub 

} 
}); 

// Access the RequestQueue through your singleton class. 
MySingleton.getInstance(this).addToRequestQueue(jsObjRequest); 

See this docs

+0

不使用JsonObjectRequest :( –

+0

$ rawData = file_get_contents(「php:// input」); var_dump($ rawData);你是否在服務器端檢查了這一個? – Gopal

+0

它顯示如下響應: - string(0 )「」「 –