2017-10-13 1 views
0
arbeiten

ich brauche einen Dienst zu nennen http-Verbindung erhalten verwenden, enthält die Antwort arabische Zeichen, aber wenn ich nenne es den Code mit unterAnruf Httpconnection mit Codierung nicht

try { 

     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 

     InputStream in = new BufferedInputStream(conn.getInputStream()); 
     response = IOUtils.toString(in, "UTF-8"); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

die reponse

1|U|����� ������|$2|L|���� �������|$3|S|���� 
ist

ich versuchte, nicht eine andere Lösung Commons-io aber auch nicht funktioniert

   HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
      connection.setConnectTimeout(5000); 
      connection.setRequestMethod("GET"); 
      connection.connect(); 
      int statusCode = connection.getResponseCode(); 
      //Log.e("statusCode", "" + statusCode); 
      if (statusCode == 200) { 
       sb = new StringBuilder(); 
       reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8")); 

       char[] tmp = new char[1024]; 
       int l; 
       while((l = reader.read(tmp)) != -1) { 
        sb.append(tmp, 0, l); 
       } 
       //sb = buffer.toString(); 
      } 

      connection.disconnect(); 
      if (sb != null) 
       serverResponse = sb.toString(); 

Sie mit i nee d um irgendetwas vom Webservice zu ändern ??? aber wenn ich es aus dem Browser aufrufen, zeigen alle Zeichen klar und ohne Probleme irgendeinen Vorschlag?

Antwort

3

Möglicherweise verwendet der Server nicht UTF-8, Ihr Code versucht UTF-8 zu verwenden, um die Daten zu decodieren, aber das funktioniert nur, wenn der Server die gleiche Codierung verwendet.

Der Browser funktioniert, weil er möglicherweise den HTTP-Header "Content-Encoding" verwendet, der die für die Daten verwendete Codierung anzeigen sollte.

+0

Vielen youu es das ist, änderte ich die Globalisierung in Web-Config von Web-Service auf UTF-8 – Amalo

1

Bitte entschlüsseln die Zeichenfolge Antwort

String dateStr = URLDecoder.decode(yourStringResponse, "utf-8");