2016-02-22 3 views
0

Я пытаюсь ударить URL, чтобы получить ответ JSon Ранее я использовал HttpURLConnection и его работы прекрасно, поэтому я обновление от HttpURLConnection до ЗалпVolley С Получить запрос и параметры

URL, я пытаюсь ударить следящие

http://162.13.137.145:8073/api/PageContent/GetPageContentsByName?PageName=About Us

но с Volley я не могу получить ответ я сделал пользовательский класс простиралась от запроса, но я имею следующие выпуск

error: org.json.JSONEXception: Value Access of type java.lang.String cannot be converted to JSONObject 

Код для пользовательского класса, следящие

public class CustomGetPostRequest extends Request<JSONObject> { 
    private int mMethod; 
    private String mUrl; 
    Map<String, String> mParams= new HashMap<String ,String>(); 
    private Response.Listener<JSONObject> mListener; 
    HashMap<String, String> headers = new HashMap<String, String>(); 

    public CustomGetPostRequest(int method, String url, Map<String, String> params, 
         Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) { 
     super(method, url, errorListener); 
     mMethod = method; 
     mUrl = url; 
     Log.d("Main URL",mUrl); 
     mParams = params; 
     mListener = reponseListener; 
    } 

    @Override 
    public String getUrl() { 
     if(mMethod == Request.Method.GET) { 
      StringBuilder stringBuilder = new StringBuilder(mUrl); 
      Iterator<Map.Entry<String, String>> iterator = mParams.entrySet().iterator(); 
      int i = 1; 
      while (iterator.hasNext()) { 
       Map.Entry<String, String> entry = iterator.next(); 
       if(i == 1) { 
        stringBuilder.append("?" + entry.getKey() + "=" + entry.getValue()); 
       } else { 
        stringBuilder.append("&" + entry.getKey() + "=" + entry.getValue()); 
       } 
       iterator.remove(); // avoids a ConcurrentModificationException 
       i++; 
      } 
      mUrl = stringBuilder.toString(); 
      Log.d("Converted URL",mUrl); 
     } 
     return mUrl; 
    } 

    @Override 
    protected Map<String, String> getParams() 
      throws com.android.volley.AuthFailureError { 
      Log.d("getParams","Called"); 
     return mParams; 
    } 
    @Override 
    public Map<String, String> getHeaders() throws AuthFailureError { 
//  HashMap<String, String> headers = new HashMap<String, String>(); 
     headers.put("Content-Type", "application/json; charset=utf-8"); 
//  headers.put ("Content-Type", "application/x-www-form-urlencoded"); 
     return headers; 
    } 
    @Override 
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { 
     try { 

      String jsonString = new String(response.data, 
        HttpHeaderParser.parseCharset(response.headers)); 
      return Response.success(new JSONObject(jsonString), 
        HttpHeaderParser.parseCacheHeaders(response)); 
     } catch (UnsupportedEncodingException e) { 
      return Response.error(new ParseError(e)); 
     } catch (JSONException je) { 
      if (response.statusCode == 200)// Added for 200 response 
       return Response.success(new JSONObject(),HttpHeaderParser.parseCacheHeaders(response)); 
      else 
      return Response.error(new ParseError(je)); 
     } 
    } 

    @Override 
    protected void deliverResponse(JSONObject response) { 
     // TODO Auto-generated method stub 
     mListener.onResponse(response); 
    } 
} 

Я также пришел знать, что для типа запроса Get getParam() не называется так изменили URL и добавляется непосредственно Params в URL
запрос для Волейбол следующий

CustomGetPostRequest getPostRequest = new CustomGetPostRequest(Request.Method 
       .GET,cachedURL,params,this,this); 
     getPostRequest.setTag(ResponseTag.CONTENT_PAGES); 

     mQueue.add(getPostRequest); 

Что мне здесь не хватает?

ответ

2

Единственный вопрос, который я столкнулся после долгой отладки является URL толкнули с пространством и не был признан правильный URL, так что я изменил URL из

http://162.13.137.145:8073/api/PageContent/GetPageContentsByName?PageName=About Us 

в

http://162.13.137.145:8073/api/PageContent/GetPageContentsByName?PageName=About%20Us 

и она работала

+0

Yup. URL-адрес кодирует строки URL-адреса –

Смежные вопросы