2016-05-22 38 views
0

Ich machte Website mit meinem localhost und es hat einige Werte und Schaltfläche. Wenn jemand auf die URL zugreift (zum Beispiel http://myhost/?status2=0), wird der Wert geändert.Android HttpUrlConnection funktioniert nicht

Ich möchte diese Aktion in Android, also habe ich HttpURLConnection verwendet, aber es funktioniert nicht.

Wenn ich auf URL mit Intent (ACTION_VIEW, Uri.parse("http...")) in Android zugreifen, funktioniert es gut.

Aber ich Zugriff auf URL mit HttpURLConnection, es funktioniert nicht. Ich weiß nicht, was falsch ist. Bitte hilf mir.

Dies ist Code in Android App. Ich habe bereits Manifeste überprüft.

try{ 
    URL url = new URL("http://myhost/?status2=0"); 

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setUseCaches(false); 
    conn.setRequestMethod("POST"); 
    conn.setDoInput(true); 
    conn.setDoOutput(true); 

} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

Ich bin nicht sicher, aber ich denke, wenn Sie "HttpURLConnection" verwenden möchten, sollte Ihre URL "www" enthalten. Probieren Sie es aus und prüfen Sie, ob es funktioniert? – pooyan

+0

Sie können OkHttp 3rd Party Library verwenden. Es wird von vielen über die HttpURLConnection bevorzugt. – Vucko

Antwort

0

Ok können Sie Retrofit oder OkHttp aber in HttpUrlConnection versuchen verwenden wie folgt aus:

public void refreshToken(String url,String refresh,String cid,String csecret) throws IOException { 
     URL refreshUrl = new URL(url + "token"); 
     HttpURLConnection urlConnection = (HttpURLConnection) refreshUrl.openConnection(); 
     urlConnection.setDoInput(true); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     urlConnection.setUseCaches(false); 
     String urlParameters = "grant_type=refresh_token&client_id=" + cid + "&client_secret=" + csecret + "&refresh_token=" + refresh; 
     // Send post request 
     urlConnection.setDoOutput(true); 
     DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream()); 
     wr.writeBytes(urlParameters); 
     wr.flush(); 
     wr.close(); 
     int responseCode = urlConnection.getResponseCode(); 
     //this is my Pojo class . I am converting response to Pojo with Gson 
     RefreshTokenResult refreshTokenResult = new RefreshTokenResult(); 
     if (responseCode == 200) { 

      BufferedReader in = new BufferedReader(
        new InputStreamReader(urlConnection.getInputStream())); 
      String inputLine; 
      StringBuffer response = new StringBuffer(); 

      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
      } 
      in.close(); 
      // JSONObject obj=new JSONObject(response.toString()); 
      Gson gson = new Gson(); 
      refreshTokenResult = gson.fromJson(response.toString(), RefreshTokenResult.class); 
      //handle new token ... 
      mLoginPrefsEditor = mLoginPreferences.edit(); 
      mLoginPrefsEditor.commit(); 
      mLoginPrefsEditor.putString(mContext.getResources().getString(R.string.pref_accesstoken), "Bearer " + refreshTokenResult.getAccessToken()); 
      mLoginPrefsEditor.putString(mContext.getResources().getString(R.string.pref_refreshtoken), refreshTokenResult.getRefreshToken()); 
      mLoginPrefsEditor.commit(); 
     } 
} 

In meinem anderen Anfragen ich bin mit OkHttpRetrofit gesichert, aber in Aktualisierungs-Token - Aktualisierungs-Token ist ein kritischer Prozess für mich - ich benutze HttpUrlConnection.

Wenn ich OkHttp oder Retrofit in Aktualisierungs-Token-Methode verwenden, manchmal wird nicht geht es richtig.

Und ich habe das: manchmal müssen Sie grundlegende Handshake-Methode mit HttpUrlConnection verwenden.

Verwandte Themen