2017-01-07 4 views
0

Мы разработали приложение на Android, используя Asynctask для извлечения данных из backend, который отлично работает. Затем приложение было перенесено на другой сервер . после этого большую часть времени, когда мы пытаемся подключиться к серверу, получаем (временный переадресация) Ошибка HTTP. Хотя у нас есть одно и то же приложение, разработанное для iOS, и оно отлично работает с новым сервером.Ошибка HTTP 307 в Android после перехода на новый сервер

В настоящее время я попытался запустить приложение для Android, используя URL-адрес старого сервера, и он отлично работает. В то же время, когда я использую URL для нового сервера, проблема все еще сохраняется.

Так что мне нужно знать, что это проблема с конфигурацией сервера, или это проблема с той библиотекой подключений, которую я использую.

public void getData(MainModel mainModel) { 

     this.mainModel = mainModel; 
     requestURL = " ........"; 
     postString = "........"; 

     execute(); 
    } 


    public HttpURLConnection POSTConnection(String postString) { 

     URL url = null; 
     HttpURLConnection httpURLConnection = null; 

     try { 
      url = new URL(requestURL); 

      httpURLConnection = (HttpURLConnection) url.openConnection(); 
      httpURLConnection.setDoOutput(true); 

      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

      PrintWriter out = new PrintWriter(httpURLConnection.getOutputStream()); 
      out.print(postString); 
      out.close(); 

     } catch (MalformedURLException e) { 
      exception(e); 
     } catch (ProtocolException e) { 

      exception(e); 
     } catch (IOException e) { 

      exception(e); 

     } 

     return httpURLConnection; 
    } 

    public String JSONResponse(HttpURLConnection httpURLConnection) { 

     int statusCode = 0; 
     StringBuilder response; 
     byte[] data = null; 
     String responseString = null; 

     try { 

      statusCode = httpURLConnection.getResponseCode(); 

      if (statusCode == HttpURLConnection.HTTP_OK) { 

       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader 
         (httpURLConnection.getInputStream())); 

       response = new StringBuilder(); 

       String line; 
       while ((line = bufferedReader.readLine()) != null) { 
        response.append(line); 
       } 

       data = response.toString().getBytes(); 
       responseString = new String(data); 

      } else { 

       POSTConnection(postString); 
       data = null; 
      } 


     } catch (IOException e) { 

      exception(e); 
     } 

     return responseString; 

    } 


protected ArrayList<....Model> doInBackground(Void... params) { 

    ArrayList<.....Model> myList = null; 

    HttpURLConnection httpURLConnection = POSTConnection(postString); 

    if (httpURLConnection != null) { 

     String responseString = JSONResponse(httpURLConnection); 

     if (responseString != null) { 

      myList = parseJSONResponse(responseString); 

     } 

     httpURLConnection.disconnect(); 
    } 

    return .......; 
} 

Заранее спасибо.

+0

Редактировать вопрос, чтобы включить код, который делает запрос HTTP, чтобы мы могли видеть, как вы настраиваете его – hardillb

+0

@hardillb Я добавил HTTP-запрос – Luji

ответ

0

Посмотрите на метод HttpURLConnection.setFollowRedirects(boolean)

Вы должны быть в состоянии добавить следующую строку в ваш код:

httpURLConnection = (HttpURLConnection) url.openConnection(); 
httpURLConnection.setDoOutput(true); 

httpURLConnection.setFollowRedirects(true); 

httpURLConnection.setRequestMethod("POST"); 
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
+0

Я добавил эту строку. проблема в том, что для получения данных с сервера требуется почти 2 минуты. Есть ли другое решение? – Luji

Смежные вопросы