簡體   English   中英

構建請求時出現Android Retrofit錯誤

[英]Android Retrofit error while building a request

當我嘗試使用Retrofit執行RESTfull服務時,我想知道是否有人能告訴我為什么我收到錯誤的請求錯誤

錯誤:HTTP / 1.1 400錯誤請求

這是我的兩個班級:

RetrofitInterface:

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);
    }


}

MainActivity中的Asyntask

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

            }
        });

    }

}

結果總是失敗。 我原本以為問題是Retrofit內置的gson轉換器無法將響應轉換為stock對象,因為我只收到了“Retrofit.retrofiterror”響應。但是'Bad Request'響應讓我覺得問題在於api的URL。這是我想要的回復網址:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22AIB.IR%22)%0A%09%09&format=json&diagnostics=true&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=

誰能告訴我,如果我在我的代碼中正確構建這個? 一個可能的問題是我在查詢中逃避了我的引用。 也許這會導致問題?

以防我發布我的Stock對象。 我是在在線POJO轉換器的幫助下寫的

public class Stock {

    @Expose
    private Query query;

    public Query getQuery() {
        return query;
    }


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

}

任何有關這方面的幫助將不勝感激。

您嘗試使用一個查詢字符串參數而不是多個。 這不起作用,請參考這個問題 此外,無需編碼查詢內容,Retrofit將自動執行(請參閱文檔 ):

參數值默認為URL編碼。 指定encodeValue = false以更改此行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM