Java 生成请求时出现Android改装错误

Java 生成请求时出现Android改装错误,java,android,rest,retrofit,Java,Android,Rest,Retrofit,我想知道是否有人能告诉我,当我尝试使用改造来执行RESTfull服务时,为什么会出现错误的请求 错误:HTTP/1.1 400错误请求 以下是我的两门课: 改装接口: public class RetrofitInterface { private static StockApiInterface sStockService; public static StockApiInterface getStockApiClient() { if (sStockServ

我想知道是否有人能告诉我,当我尝试使用改造来执行RESTfull服务时,为什么会出现错误的请求

错误:HTTP/1.1 400错误请求

以下是我的两门课:

改装接口:

public class RetrofitInterface {
    private static StockApiInterface sStockService;

    public static StockApiInterface getStockApiClient() {
        if (sStockService == null) {
            RestAdapter restAdapter = new RestAdapter.Builder()
                    .setEndpoint("http://query.yahooapis.com/v1/public")
                    .build();
            sStockService = restAdapter.create(StockApiInterface.class);
        }

        return sStockService;
    }

    public interface StockApiInterface {
        @GET("/yql")
        void listQuotes(@Query("q") String query,Callback<Stock> stockInfo);
    }


}

在此方面的任何帮助都将不胜感激。

您正在尝试使用一个查询字符串参数,而不是多个查询字符串参数。这不起作用,请参阅。 此外,无需对查询内容进行编码,改型将自动完成(请参阅):

默认情况下,参数值是URL编码的。指定encodeValue=false以更改此行为


将日志记录添加到改造中,以查看其提出的确切请求。您可以通过将.setLogLevel(RestAdapter.LogLevel.FULL)添加到您的RestAdapter中来完成此操作。此外,由于您在请求中使用回调,因此无需将其放入AsyncTask中。不要转义YQL查询字符串。像使用原始SQL字符串一样使用它。好的,我正在请求api并获得json响应。。但是,将其转换为对象会让我感到困惑,因为json太冗长了。*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22AIB.IR%22%2C%22BIR.IR%22)%0A%09%09&format=json&diagnostics=true&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=这是api。我只需要在url中添加一个参数来返回“result”数组就行了吗?当然,只要删除“&diagnostics=true”,信息就会更少。您可以从JSON响应中只映射所需的字段。只需创建具有相同名称的字段,并在类中为其创建getter/setter
public class extraThread extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
        RetrofitInterface.getStockApiClient().listQuotes("select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(\"AIB.IR\")%0A%09%09&format=json&diagnostics=true&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=", new Callback<Stock>() {


            @Override
            public void failure(RetrofitError arg0) {
                // TODO Auto-generated method stub
                arg0.printStackTrace();
            }

            @Override
            public void success(Stock arg0, Response arg1) {
                // TODO Auto-generated method stub

            }
        });

    }

}
public class Stock {

    @Expose
    private Query query;

    public Query getQuery() {
        return query;
    }


    public void setQuery(Query query) {
        this.query = query;
    }

}