Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改装2.0返回的URL不正确_Android_Retrofit_Retrofit2 - Fatal编程技术网

Android 改装2.0返回的URL不正确

Android 改装2.0返回的URL不正确,android,retrofit,retrofit2,Android,Retrofit,Retrofit2,我正在尝试使用改型2.0构建我的URL。问题是它正在返回此URL: http://query.yahooapis.com/v1/public/yql?&q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)&format=json%26diagnostics%3Dtrue%26env%3Dstore%253A%252F%252Fdatatables.org%252Falltab

我正在尝试使用改型2.0构建我的URL。问题是它正在返回此URL:

http://query.yahooapis.com/v1/public/yql?&q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)&format=json%26diagnostics%3Dtrue%26env%3Dstore%253A%252F%252Fdatatables.org%252Falltableswithkeys%26callback%3D
我希望它返回此URL:

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=
有人能告诉我如何解决这个问题吗

以下是返回URL的代码:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(API_BASE_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .build();

mQuoteAdapter = new QuoteAdapter(items);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.question_list);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(mQuoteAdapter);

StockApiServiceInterface stockApiServiceInterface = retrofit.create(StockApiServiceInterface.class);

stockApiServiceInterface.listQuotes(
        "select * from yahoo.finance.quotes where symbol in (\"YHOO\")",
        "json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=")
        .enqueue(new Callback<ResultWrapper>() {
          @Override
          public void onResponse(Response<ResultWrapper> response) {
              response.body().getQuery().getResults().getQuote().getAsk();
          }

          @Override
          public void onFailure(Throwable t) {
            Log.e("listQuotes threw: ", t.getMessage());
          }
        });
reformation-reformation=new-reformation.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
mQuoteAdapter=新的QuoteAdapter(项目);
RecyclerView RecyclerView=(RecyclerView)findViewById(R.id.question_列表);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
setAdapter(mQuoteAdapter);
StockApiServiceInterface StockApiServiceInterface=改装.create(StockApiServiceInterface.class);
stockApiServiceInterface.listQuotes(
“从yahoo.finance.quotes中选择*符号(\“YHOO\”)”,
“json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=”)
.enqueue(新的回调函数(){
@凌驾
公共响应(响应){
response.body().getQuery().getResults().getQuote().getAsk();
}
@凌驾
失效时的公共无效(可丢弃的t){
Log.e(“listQuotes:,t.getMessage());
}
});
这是我的服务:

public final class StockApiService {

  public interface StockApiServiceInterface {

    @GET("v1/public/yql?")
    Call<ResultWrapper> listQuotes(
            @Query("q") String query,
            @Query("format") String env
    );
  }
}
公共最终类服务{
公共接口StockApiServiceInterface{
@获取(“v1/public/yql?”)
调用listQuotes(
@查询(“q”)字符串查询,
@查询(“格式”)字符串环境
);
}
}

从您的请求URL中删除问号,如下所示:

@GET("v1/public/yql")
@Query("q") String query,
@Query("format") String format,
@Query("diagnostics") boolean diagnostics,
@Query("env") String enviroment,
@Query("callback") boolean callback
并将发送到此处的参数分开:

"json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=")
进入查询项。 您的方法应该如下所示:

@GET("v1/public/yql")
@Query("q") String query,
@Query("format") String format,
@Query("diagnostics") boolean diagnostics,
@Query("env") String enviroment,
@Query("callback") boolean callback

从您的请求URL中删除问号,如下所示:

@GET("v1/public/yql")
@Query("q") String query,
@Query("format") String format,
@Query("diagnostics") boolean diagnostics,
@Query("env") String enviroment,
@Query("callback") boolean callback
并将发送到此处的参数分开:

"json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=")
进入查询项。 您的方法应该如下所示:

@GET("v1/public/yql")
@Query("q") String query,
@Query("format") String format,
@Query("diagnostics") boolean diagnostics,
@Query("env") String enviroment,
@Query("callback") boolean callback

与Ian略有不同,简化了一点:

public final class StockApiService {
  public interface StockApiServiceInterface {
    @GET("v1/public/yql?format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys")
    Call<ResultWrapper> listQuotes(
        @Query("q") String query,
        @Query("diagnostics") boolean diagostics
    );
  }
}
公共最终类服务{
公共接口StockApiServiceInterface{
@获取(“v1/public/yql?format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys”)
调用listQuotes(
@查询(“q”)字符串查询,
@查询(“诊断”)布尔诊断学
);
}
}
方法注释中可以包含不变的查询字符串参数,而改型应该将它们合并在一起。另外,我删除了
callback
参数,因为这是一个用于名为JSONP的网站的东西,与Android应用程序无关


您实际遇到的问题是,您正在为Reformation提供一个预合成的部分查询字符串,并要求它为您编码。改型不知道它是一个预合成的查询字符串,所以它做了它应该做的事情:将其视为查询字符串参数的值,并对其进行URL编码@Ian完全正确,您需要将它们分开。

与Ian相比有一些细微的变化,简化了一点:

public final class StockApiService {
  public interface StockApiServiceInterface {
    @GET("v1/public/yql?format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys")
    Call<ResultWrapper> listQuotes(
        @Query("q") String query,
        @Query("diagnostics") boolean diagostics
    );
  }
}
公共最终类服务{
公共接口StockApiServiceInterface{
@获取(“v1/public/yql?format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys”)
调用listQuotes(
@查询(“q”)字符串查询,
@查询(“诊断”)布尔诊断学
);
}
}
方法注释中可以包含不变的查询字符串参数,而改型应该将它们合并在一起。另外,我删除了
callback
参数,因为这是一个用于名为JSONP的网站的东西,与Android应用程序无关

您实际遇到的问题是,您正在为Reformation提供一个预合成的部分查询字符串,并要求它为您编码。改型不知道它是一个预合成的查询字符串,所以它做了它应该做的事情:将其视为查询字符串参数的值,并对其进行URL编码@伊恩说得对,你需要把他们分开