2016-05-28 3 views
0

Я пытаюсь найти интересные места и включить APIS "google maps android API & google places API". Когда я отправляю URL-адрес в веб-браузере с помощью моего API_Key.Ошибка stackoverflow с использованием gson

Сообщение об ошибке:
«Это IP, сайт или мобильное приложение не имеет права использовать этот ключ API. Запрос получен с IP-адреса 212.241.70.124 с пустым реферированием».

2-я вещь, когда я запускаю этот код, тогда я получаю ошибку: «java.lang.StackOverflowError: размер стека 1036 КБ gson». Пожалуйста, дайте мне знать, что я делаю неправильно? Я был бы очень благодарен вам!

Java код:

public class FoodFragment extends Fragment { 

private SupportMapFragment mapfragment; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view= inflater.inflate(R.layout.food_layout, null); 

    // I am getting Map here and it's okay. 
    googlemap(); 

    PostFetcher postfetcher=new PostFetcher(); 
    postfetcher.execute(); 

    return view; 
    } 



    private class PostFetcher extends AsyncTask<Void,Void,String>{ 

    private static final String TAG = "PostFetcher"; 
    public static final String SERVER_URL = " https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=50&type=restaurant&name=cruise&key=My APi key here"; 


    @Override 
    protected String doInBackground(Void... params) { 

     try { 

      Gson gson = new GsonBuilder().create(); 
      FoodFragment jsondata = gson.fromJson(SERVER_URL, FoodFragment.class); 

      System.out.println("data="+jsondata); 

     } catch (Exception ex) { 
      Log.e(TAG, "Failed to parse JSON due to: " + ex); 
     } 
     return null; 
    } 


} 

} 

ответ

0
FoodFragment jsondata = gson.fromJson(SERVER_URL, FoodFragment.class); 

FoodFragment.class это имя текущего файла класса, а не объект Java, что JSON представляет. Второй параметр должен быть POJO, а первая - строка JSON, а не URL.

Казалось бы, что вам нужно сделать запрос HTTP первым, то вы можете сделать

MapData map = gson.fromJson(serverResponse, MapData.class); 

После создания MapData класс, конечно.

+0

спасибо и зачем делать запрос HTTP? почему я получаю ошибку в браузере, когда хочу увидеть структуру данных json? – Shahek

+0

Обычный объект Java (POJO) ... 'class Person {string name; } '==' {"name": "something"} '.. Для этого используется Gson; сериализация объектов Java. –

+0

Вы должны сделать HTTP-запрос, чтобы получить строку JSON. Вы в настоящее время пытаетесь преобразовать String (url) в объект Java, который не будет работать. –

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