我还没有真正找到关于此的明确文档,但我想知道是否有人可以指出我使用Retrofit(或OKHTTP或其他更合适的东西)的东西来拉下来来自API的JSON流,需要API ID和API密钥(例如从终端访问数据:curl -v -H" app_id:appid" -H" app_key:appkey" -X GET" http://data.leafly.com/strains/blue-dream")。
我查看了Square网站上的官方文档,但如果有其他任何内容可以帮助我将数据拉下来那将是非常棒的。
谢谢!
最终答案
RestAdapter.Builder builder= new RestAdapter.Builder()
.setEndpoint( "http://data.leafly.com/" )
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestInterceptor.RequestFacade request) {
request.addHeader("app_id", "id");
request.addHeader("app_key", "key");
}
});
final RestAdapter restAdapter = builder.build();
new Thread( new Runnable() {
@Override
public void run() {
LeaflyService service = restAdapter.create(LeaflyService.class);
final Strain strain = service.data("blue-dream");
runOnUiThread( new Runnable() {
@Override
public void run() {
mText.setText( strain.getDescription() );
}
} );
}
} ).start();
加上应变模型,只适合数据。
答案 0 :(得分:4)
要发送ID和密钥,您需要修改HTTP标头。您似乎可以使用Retrofit中的@Header
annotation执行此操作。
答案 1 :(得分:2)
上面的答案对我没有用,这是我的解决方案:
RestAdapter.Builder adapterBuilder = new RestAdapter.Builder().setLogLevel(RestAdapter.LogLevel.FULL) .setEndpoint(BACKEND_URL).setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestInterceptor.RequestFacade request) { request.addQueryParam("apikey", apiKey); } }); service = adapterBuilder.build().create(BackendInterface.class);
@POST("/getall")
void getIdeaList( Callback<GetAllIdeaResponse> callback);