Android改造错误

时间:2015-09-14 12:38:25

标签: android retrofit

我已经创建了一个应用程序,它会向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);
}

任何帮助.. 感谢

2 个答案:

答案 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参数,这里只发送三个查询 祝你好运......