2015-05-08 4 views
2

Am получает 400 ошибки сервера для залпа получить запрос ниже URLПолучение ошибки сервера 400 залпа, который работает от клиента Rest успешно

http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ('AEDALL')&format=json&env=store://datatables.org/alltableswithkeys&callback= 

, когда я попал в том же URL от остальных клиентов его давая ответ JSON

Вот мой код для запроса залпового

private void convertCurrenctVolleyTask(String from, final String to, final String amount) { 

    String url_yahoo = "http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ('"+from+to+"')&format=json&env=store://datatables.org/alltableswithkeys&callback="; 

    final ProgressDialog progressDialog; 
    progressDialog = new ProgressDialog(CurrencyConverter.this); 
    progressDialog.setMessage("Please wait..."); 
    progressDialog.setCancelable(true); 
    progressDialog.show(); 

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

       @Override 
       public void onResponse(JSONObject response) { 
        progressDialog.cancel(); 
        if (response != null) { 
          parseGetCurrencyResp(response,to,amount); 

        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        progressDialog.cancel(); 
        Toast.makeText(CurrencyConverter.this, 
          "Server error..", Toast.LENGTH_SHORT).show(); 
        error.printStackTrace(); 

       } 
      }); 

    ConfigVolley.getInstance().addToRequestQueue(GetCurrenciesjsObjRequest); 

} 

Любая помощь приветствуется

ответ

8

Вам нужно будет заменить все вхождения пространства ("") на% 20 url_yahoo = url_yahoo.replace ("", "% 20");

+1

Благодаря человеку его работы в настоящее время. – kondal

+0

Ваш прием, если вы не возражаете, можете ли вы принять ответ, так как он сработал. – leibreichb1

+0

Я получал действительно странную ошибку от моего сервера Phusion Passenger. Просто ответ «400» с «недопустимой постоянной строкой», но только на Android <23 и ниже. Оказывается, у меня было место в моем URL-адресе. Думаю, Volley после этого автоматически исправляет неверную кодировку? – ErikPerik

0

Это неверно отформатированный URL-адрес. Вам необходимо кодировать параметры вашего URL-адреса, чтобы они не содержали недопустимых символов.

Попробуйте использовать URLEncoder, прежде чем использовать url_yahoo так:

String query = "select * from yahoo.finance.xchange where pair in ('"+from+to+"')"; 
query = URLEncoder.encode(query, "utf-8"); 

String env = "store://datatables.org/alltableswithkeys&callback="; 
env = URLEncoder.encode(query, "utf-8"); 

url_yahoo = "http://query.yahooapis.com/v1/public/yql?q=" + query + "&format=json&env=" + env; 
+0

Спасибо за ваш ответ, я получаю ниже отформатированный URL-адрес с такими же 400 05-08 20: 09: 11.902: E/Volley (7509): [47873] BasicNetwork.performRequest: Неожиданный код ответа 400 для http: // query. yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.xchange+where+pair+in+%28%27AEDAMD%27%29&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys % 26callback% 3D – kondal

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

  • Нет связанных вопросов^_^