我有两个API -
一个用于搜索与该电话号码相关联的人的 ID 的电话号码(比方说http://example.com/api/?phone=1234567890)
另一个(http://example.com/api/con/ ID /)来获取联系人详细信息。
基本上,在第二次调用中,我必须包含第一次调用中返回的id。
我的问题是我该怎么做?
我在我的代码中来到这里,但除了我的情况,我找不到任何东西。
public interface RequestInterface {
@GET("/con/")
Call<JSONResponse> getJSON();
}
答案 0 :(得分:1)
由于动态路径发生了变化,因此如果您尝试从本地服务器调用它,则需要使用以下规则创建.htaccess文件:
# Turn rewrite engine on
Options +FollowSymlinks
RewriteEngine on
# map neat URL to internal URL
RewriteRule ^api/con/([0-9]+)/?$ RestController.php?phone=single&id=$1 [NC,L,QSA]
RewriteCond %{QUERY_STRING} (?:^|&)number=(\d+)$
RewriteRule ^api/?$ RestController.php?phone=all&no=%1 [NC,L]
这将根据查询参数和URL重定向您的服务器。
public interface RequestInterface
{
BASE_URL = "http://example.com"
@GET("/api")
Call<YourFetchResponse> getPhoneDetails(@Query("api_key") String apiKey,@Query("phone") String phone);
@GET("/api/con/{id}")
Call<YourIdResponse> getIdDetails(@Query("api_key") String apiKey,@Path("id") String id);
}
<强> MainActivity.java 强>
Call<YourFetchResponse> call = RequestInterface.getPhoneDetails(API_KEY,PHONE);
call.enqueue(new Callback<YourFetchResponse>()
{
@Override
public void onResponse(Call<YourFetchResponse> call, Response<YourFetchResponse> response)
{
Call<YourIdResponse> call1 = RequestInterface.getIdDetails(API_KEY, response.body().getId);
call1.enqueue(new Callback<YourIdResponse>()
{
@Override
public void onResponse(Call<YourIdResponse> call, Response<YourIdResponse> response)
{....}
@Override
public void onFailure(Call<YourFetchResponse> call, Throwable t)
{....}
}
@Override
public void onFailure(Call<YourFetchResponse> call, Throwable t)
{....}
});
答案 1 :(得分:0)
您需要使用@Path注释。
public interface RequestInterface {
BASE_URL = "http://example.com/api/";
@GET("con/{id}")
Call<YourFetchResponse> contactFetch(@Path("id") String id);
@GET("")
Call<YourIdResponse> contactId(@Query("phone") String phone);
}
祝你好运。
答案 2 :(得分:0)
public interface RequestInterface {
@GET("serviceURL")
Call<JSONResponse> getPhoneDetails(@Query("api_key") String apiKey);
@GET("serviceURL")
Call<JSONResponse> getIdDetails(@Query("api_key") String apiKey);
}
onResponse of First service call second service。