我已经创建了一个应用程序,它会向Google API发出一些请求,这些参数会返回JSON作为响应。 问题是这个请求将每2秒发出一次。 所以现在我的logcat显示一些错误并且每次都调用failure()
这是我的logcat:
09-14 18:03:55.338 8080-10980/com.example.akshay.retrofitgsonjsonarray D/Retrofit﹕ ---- ERROR
09-14 18:03:55.348 8080-10980/com.example.akshay.retrofitgsonjsonarray D/Retrofit﹕ java.lang.IllegalArgumentException: api.getData: URL query string "path={latlong}&interpolate=true&key=AIzaSyDAsAs9k2dQ6aDMUlgLcE-dTxAOxMtADTU" must not have replace block. For dynamic query parameters use @Query.
at retrofit.RestMethodInfo.methodError(RestMethodInfo.java:107)
at retrofit.RestMethodInfo.parsePath(RestMethodInfo.java:210)
at retrofit.RestMethodInfo.parseMethodAnnotations(RestMethodInfo.java:149)
at retrofit.RestMethodInfo.init(RestMethodInfo.java:117)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:294)
at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at retrofit.Platform$Android$2$1.run(Platform.java:142)
at java.lang.Thread.run(Thread.java:818)
09-14 18:03:55.348 8080-10980/com.example.akshay.retrofitgsonjsonarray D/Retrofit﹕ ---- END ERROR
每次更改logcat的值都会让我感到困惑。
我想问题就在这里,但我无法解决它
package com.example.akshay.retrofitgsonjsonarray;
import retrofit.Callback;
import retrofit.http.GET;
import retrofit.http.Query;
/**
* Created by Akshay on 9/8/2015.
*/
public interface api {
@GET("/snapToRoads?path={latlong}&interpolate=true&key=KEY")
public void getData(@Query("latlong") String latlng, Callback<SnappedPointsContainer> response);
}
任何帮助.. 感谢
答案 0 :(得分:2)
正如你的错误所说, api.getData:URL查询字符串&#34; path = {latlong}&amp; interpolate = true&amp; key = GOogle api key&#34;一定不能有替换块。对于动态查询参数,请使用@Query
你已经使用latlong作为查询参数latlong,因此你可以从硬编码的url查询字符串中删除路径,并将查询字段重命名为路径。
@GET("/snapToRoads?interpolate=true&key="googlekey")
public void getData(@Query("path") String latlng, Callback<SnappedPointsContainer> response);
旁注:您不应公开分享您的Google API密钥。
答案 1 :(得分:1)
对于小数据获取,如上所述做是很好的,就像你从Api的一个和两个目录中获取数据,但动态做所有事情。 你需要把你的基本URL放在string.xml中 喜欢:example.com
和你的界面
public interface api {
@GET("/snapToRoads")
public void getData(@Query("path") String latlng, @Query("interpolate") boolean interpolate , @Query("key") String key Callback<SnappedPointsContainer> response);}
SnappedPointsContainer Pojo,数据来自
不要在此使用{anything} Path参数,这里只发送三个查询 祝你好运......