簡體   English   中英

登錄后翻新無法獲取數據

[英]Retrofit can't get data after log in

我需要使用參數email, password ip/api/login ,然后才能從ip/api/async檢索數據。 到目前為止,我只能登錄並檢索第一個電話。 在第二個應用程序上獲取SocketTimeoutException

class talkToWebSite extends AsyncTask<String, Void, String> {
    protected String doInBackground(String... strings) {
        OkHttpClient client = new OkHttpClient();
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        client.interceptors().add(interceptor);

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://ip/")
                .client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        TraccarApi stackOverflowAPI = retrofit.create(TraccarApi.class);
        Call<Login> call1 = stackOverflowAPI.postUser("admin", "admin");
        try {
            call1.execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Call<Data> call = stackOverflowAPI.getData();
        Response<Data> response = null;
        try {
            response = call.execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response.body().getDataset().getData_latitude() + "";
    }

    protected void onPostExecute(String result) {
        longitiude.setText(result);
    }
}

當我運行該代碼時,我收到了:

OkHttp: --> GET /api/login?email=admin&password=admin HTTP/1.1
OkHttp: --> END GET
OkHttp: <-- HTTP/1.1 200 OK (73ms)
OkHttp: Date: Sat, 28 Nov 2015 22:19:12 GMT
OkHttp: Content-Type: application/json; charset=UTF-8
OkHttp: Access-Control-Allow-Origin: *
OkHttp: Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
OkHttp: Access-Control-Allow-Methods: GET, POST
OkHttp: Set-Cookie: JSESSIONID=1fk50j768xc0v1w7tb8inf29nc;Path=/api
OkHttp: Expires: Thu, 01 Jan 1970 00:00:00 GMT
OkHttp: Content-Length: 189
OkHttp: Server: Jetty(9.2.14.v20151106)
OkHttp: OkHttp-Selected-Protocol: http/1.1
OkHttp: OkHttp-Sent-Millis: 1448752725041
OkHttp: OkHttp-Received-Millis: 1448752725091
OkHttp: {"success":true,"data":{"name":"admin","language":"","id":1,"map":"","readonly":false,"distanceUnit":"","speedUnit":"","latitude":0.0,"longitude":0.0,"email":"admin","admin":true,"zoom":0}}
OkHttp: <-- END HTTP (189-byte body)
OkHttp: --> GET /api/async/ HTTP/1.1
OkHttp: --> END GET

感謝您的建議。

要從需要授權的帖子中檢索數據,我需要添加它:

String credentials = "login:password";
    final String basic = "Basic " +
            Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
    client.interceptors().add(new Interceptor() {
        @Override
        public com.squareup.okhttp.Response intercept(Interceptor.Chain chain) throws IOException {
            Request original = chain.request();
            Request.Builder requestBuilder = original.newBuilder()
                    .header("Authorization", basic)
                    .method(original.method(), original.body());
            Request request = requestBuilder.build();
            return chain.proceed(request);
        }
    });

暫無
暫無

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

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