Google directions api zero_results only on Android











up vote
0
down vote

favorite












I've builded a simple app in Android where I use Google Maps directions api.
In my code I make a Volley request and it works, but almost always it response ZERO_RESULTS.
But if I copy the value of the uri and I paste it into browser, it response some result.



Here is my code



RequestQueue requestQueue = Volley.newRequestQueue(this);
String uri = null;
uri = "https://maps.googleapis.com/maps/api/directions/json?" +
"origin=" + partenza + "&" +
"destination=" + arrivo +
"&waypoints=optimize:true";


for(int i = 0; i<tappe.size();i++){
uri = uri.concat("|").concat(tappe.get(i));
}


uri = uri + "&key=" + getString(R.string.google_maps_key);
uri = Uri.parse(uri).buildUpon()
.build().toString();


JsonObjectRequest stringRequest = new JsonObjectRequest(
Request.Method.POST, uri, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject obj = new JSONObject(String.valueOf(response));
JSONArray cast = obj.getJSONArray("routes");
if(obj.getString("status").equals("ZERO_RESULTS")){
Toast.makeText(TragittoActivity.this, "Impossibile trovare soluzione", Toast.LENGTH_SHORT).show();
finish();
}
for (int i=0; i<cast.length(); i++) {
JSONObject news = cast.getJSONObject(i);
JSONArray legs = news.getJSONArray("legs");

for (int j=0; j<legs.length(); j++) {
String start = legs.getJSONObject(j).getString("start_address");
String end = legs.getJSONObject(j).getString("end_address");

}

}

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

}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
Log.e("VolleyError", error.toString());
}

}) {

};
requestQueue.add(stringRequest);


How can I resolve this problem?
Are any differences between web call and Android call?










share|improve this question




























    up vote
    0
    down vote

    favorite












    I've builded a simple app in Android where I use Google Maps directions api.
    In my code I make a Volley request and it works, but almost always it response ZERO_RESULTS.
    But if I copy the value of the uri and I paste it into browser, it response some result.



    Here is my code



    RequestQueue requestQueue = Volley.newRequestQueue(this);
    String uri = null;
    uri = "https://maps.googleapis.com/maps/api/directions/json?" +
    "origin=" + partenza + "&" +
    "destination=" + arrivo +
    "&waypoints=optimize:true";


    for(int i = 0; i<tappe.size();i++){
    uri = uri.concat("|").concat(tappe.get(i));
    }


    uri = uri + "&key=" + getString(R.string.google_maps_key);
    uri = Uri.parse(uri).buildUpon()
    .build().toString();


    JsonObjectRequest stringRequest = new JsonObjectRequest(
    Request.Method.POST, uri, null, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    try {
    JSONObject obj = new JSONObject(String.valueOf(response));
    JSONArray cast = obj.getJSONArray("routes");
    if(obj.getString("status").equals("ZERO_RESULTS")){
    Toast.makeText(TragittoActivity.this, "Impossibile trovare soluzione", Toast.LENGTH_SHORT).show();
    finish();
    }
    for (int i=0; i<cast.length(); i++) {
    JSONObject news = cast.getJSONObject(i);
    JSONArray legs = news.getJSONArray("legs");

    for (int j=0; j<legs.length(); j++) {
    String start = legs.getJSONObject(j).getString("start_address");
    String end = legs.getJSONObject(j).getString("end_address");

    }

    }

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

    }, new Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
    Log.e("VolleyError", error.toString());
    }

    }) {

    };
    requestQueue.add(stringRequest);


    How can I resolve this problem?
    Are any differences between web call and Android call?










    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I've builded a simple app in Android where I use Google Maps directions api.
      In my code I make a Volley request and it works, but almost always it response ZERO_RESULTS.
      But if I copy the value of the uri and I paste it into browser, it response some result.



      Here is my code



      RequestQueue requestQueue = Volley.newRequestQueue(this);
      String uri = null;
      uri = "https://maps.googleapis.com/maps/api/directions/json?" +
      "origin=" + partenza + "&" +
      "destination=" + arrivo +
      "&waypoints=optimize:true";


      for(int i = 0; i<tappe.size();i++){
      uri = uri.concat("|").concat(tappe.get(i));
      }


      uri = uri + "&key=" + getString(R.string.google_maps_key);
      uri = Uri.parse(uri).buildUpon()
      .build().toString();


      JsonObjectRequest stringRequest = new JsonObjectRequest(
      Request.Method.POST, uri, null, new Response.Listener<JSONObject>() {
      @Override
      public void onResponse(JSONObject response) {
      try {
      JSONObject obj = new JSONObject(String.valueOf(response));
      JSONArray cast = obj.getJSONArray("routes");
      if(obj.getString("status").equals("ZERO_RESULTS")){
      Toast.makeText(TragittoActivity.this, "Impossibile trovare soluzione", Toast.LENGTH_SHORT).show();
      finish();
      }
      for (int i=0; i<cast.length(); i++) {
      JSONObject news = cast.getJSONObject(i);
      JSONArray legs = news.getJSONArray("legs");

      for (int j=0; j<legs.length(); j++) {
      String start = legs.getJSONObject(j).getString("start_address");
      String end = legs.getJSONObject(j).getString("end_address");

      }

      }

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

      }, new Response.ErrorListener() {

      @Override
      public void onErrorResponse(VolleyError error) {
      Log.e("VolleyError", error.toString());
      }

      }) {

      };
      requestQueue.add(stringRequest);


      How can I resolve this problem?
      Are any differences between web call and Android call?










      share|improve this question















      I've builded a simple app in Android where I use Google Maps directions api.
      In my code I make a Volley request and it works, but almost always it response ZERO_RESULTS.
      But if I copy the value of the uri and I paste it into browser, it response some result.



      Here is my code



      RequestQueue requestQueue = Volley.newRequestQueue(this);
      String uri = null;
      uri = "https://maps.googleapis.com/maps/api/directions/json?" +
      "origin=" + partenza + "&" +
      "destination=" + arrivo +
      "&waypoints=optimize:true";


      for(int i = 0; i<tappe.size();i++){
      uri = uri.concat("|").concat(tappe.get(i));
      }


      uri = uri + "&key=" + getString(R.string.google_maps_key);
      uri = Uri.parse(uri).buildUpon()
      .build().toString();


      JsonObjectRequest stringRequest = new JsonObjectRequest(
      Request.Method.POST, uri, null, new Response.Listener<JSONObject>() {
      @Override
      public void onResponse(JSONObject response) {
      try {
      JSONObject obj = new JSONObject(String.valueOf(response));
      JSONArray cast = obj.getJSONArray("routes");
      if(obj.getString("status").equals("ZERO_RESULTS")){
      Toast.makeText(TragittoActivity.this, "Impossibile trovare soluzione", Toast.LENGTH_SHORT).show();
      finish();
      }
      for (int i=0; i<cast.length(); i++) {
      JSONObject news = cast.getJSONObject(i);
      JSONArray legs = news.getJSONArray("legs");

      for (int j=0; j<legs.length(); j++) {
      String start = legs.getJSONObject(j).getString("start_address");
      String end = legs.getJSONObject(j).getString("end_address");

      }

      }

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

      }, new Response.ErrorListener() {

      @Override
      public void onErrorResponse(VolleyError error) {
      Log.e("VolleyError", error.toString());
      }

      }) {

      };
      requestQueue.add(stringRequest);


      How can I resolve this problem?
      Are any differences between web call and Android call?







      android google-maps android-volley






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 10 at 11:37









      MrUpsidown

      14.6k74893




      14.6k74893










      asked Nov 9 at 23:22









      Paolo Colombo

      52110




      52110
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote



          accepted










          The issue looks to be related to the call format:




          1. Try parsing the URI "manually" (like replacing the spaces with "%20" using the replace function) instead of using the Uri.Parse function.

          2. Try getting the response as a string instead of JSON: instead of using a JsonObjectRequest use a StringRequest and then converting the string to a JSONObject

          3. Since you are passing the parameters in the URL and you are setting the method parameters to null, try using a GET method instead of POST






          share|improve this answer





















          • I change POST in GET request and it work, thanks
            – Paolo Colombo
            Nov 12 at 11:06











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53234495%2fgoogle-directions-api-zero-results-only-on-android%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          0
          down vote



          accepted










          The issue looks to be related to the call format:




          1. Try parsing the URI "manually" (like replacing the spaces with "%20" using the replace function) instead of using the Uri.Parse function.

          2. Try getting the response as a string instead of JSON: instead of using a JsonObjectRequest use a StringRequest and then converting the string to a JSONObject

          3. Since you are passing the parameters in the URL and you are setting the method parameters to null, try using a GET method instead of POST






          share|improve this answer





















          • I change POST in GET request and it work, thanks
            – Paolo Colombo
            Nov 12 at 11:06















          up vote
          0
          down vote



          accepted










          The issue looks to be related to the call format:




          1. Try parsing the URI "manually" (like replacing the spaces with "%20" using the replace function) instead of using the Uri.Parse function.

          2. Try getting the response as a string instead of JSON: instead of using a JsonObjectRequest use a StringRequest and then converting the string to a JSONObject

          3. Since you are passing the parameters in the URL and you are setting the method parameters to null, try using a GET method instead of POST






          share|improve this answer





















          • I change POST in GET request and it work, thanks
            – Paolo Colombo
            Nov 12 at 11:06













          up vote
          0
          down vote



          accepted







          up vote
          0
          down vote



          accepted






          The issue looks to be related to the call format:




          1. Try parsing the URI "manually" (like replacing the spaces with "%20" using the replace function) instead of using the Uri.Parse function.

          2. Try getting the response as a string instead of JSON: instead of using a JsonObjectRequest use a StringRequest and then converting the string to a JSONObject

          3. Since you are passing the parameters in the URL and you are setting the method parameters to null, try using a GET method instead of POST






          share|improve this answer












          The issue looks to be related to the call format:




          1. Try parsing the URI "manually" (like replacing the spaces with "%20" using the replace function) instead of using the Uri.Parse function.

          2. Try getting the response as a string instead of JSON: instead of using a JsonObjectRequest use a StringRequest and then converting the string to a JSONObject

          3. Since you are passing the parameters in the URL and you are setting the method parameters to null, try using a GET method instead of POST







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 10 at 12:15









          Vexorei

          106112




          106112












          • I change POST in GET request and it work, thanks
            – Paolo Colombo
            Nov 12 at 11:06


















          • I change POST in GET request and it work, thanks
            – Paolo Colombo
            Nov 12 at 11:06
















          I change POST in GET request and it work, thanks
          – Paolo Colombo
          Nov 12 at 11:06




          I change POST in GET request and it work, thanks
          – Paolo Colombo
          Nov 12 at 11:06


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53234495%2fgoogle-directions-api-zero-results-only-on-android%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Schultheiß

          Verwaltungsgliederung Dänemarks

          Liste der Kulturdenkmale in Wilsdruff