2015-11-28 48 views
1

日誌後得到的數據我需要登錄ip/api/login與參數email, password,然後我可以從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 

感謝。

回答

0

爲了取回後這就需要授權數據,我需要添加:

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