2011-03-05 59 views
0

嗨 我想在android中构建一个小休息客户端。我只是试图获得一个可以稍后解析的XML文件。不过,我有一些编码问题。Android httpclient(请求)编码问题

ø和å等特殊字符无法识别。 xml文件使用ISO-8859-1编码,但我无法弄清楚如何强制httpclient使用此编码。任何人都可以提供帮助?

下面是代码:

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    String URL = "http://konkurrence.rejseplanen.dk/bin/rest.exe"; 

    String result = ""; 

    Button btn; 
    TextView tv; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv = (TextView)findViewById(R.id.tvResponse); 
     btn = (Button)findViewById(R.id.btnMakeRequest); 

     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       String query = "/departureBoard?id=8600626&date=19.03.11&time=07:02&useBus=0"; 
       callWebService(query); 
      } 
     }); 
    } 

    public void callWebService(String q){ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(URL + q); 
     ResponseHandler<String> handler = new BasicResponseHandler(); 
     try { 
      result = httpclient.execute(request, handler); 
      tv.setText(result); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     httpclient.getConnectionManager().shutdown(); 
     Log.i("test", result); 
    } 
} 

在此先感谢。 最好的问候,kenneth

回答

0

我会看看响应的标题。响应将需要设置:

Content-Type: text/xml; charset:ISO-8859-1;

否则,我的理解是,HTTP客户端将默认编码为UTF-8。如果您的Web服务正在使用它来尝试并确定您想要的内容,您可能还需要根据请求调整标题。要知道的是,如果你在浏览器中这样做,你会得到ISO文件或utf-8吗?

HTTPGet extends this class with header methods

Source info on xml encoding