我正在尝试获取感兴趣的地方并启用APIS是“google maps android API& google places API”。当我使用API_Key在网络浏览器中发布网址时。
错误讯息:
“此IP,站点或移动应用程序无权使用此API密钥。请求从IP地址212.241.70.124收到,请求空引用”。
第二件事,当我运行此代码然后我得到错误: “java.lang.StackOverflowError:堆栈大小1036KB 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 :(得分:0)
FoodFragment jsondata = gson.fromJson(SERVER_URL, FoodFragment.class);
FoodFragment.class
是当前类文件的名称,而不是JSON表示的Java对象。第二个参数必须是POJO,第一个是JSON字符串,而不是URL。
看起来您需要先发出HTTP请求,然后才能执行
MapData map = gson.fromJson(serverResponse, MapData.class);
当然,创建MapData
课程之后。