Android httpclient(请求)编码问题

时间:2011-03-05 15:57:16

标签: android rest httpclient

您好 我正在尝试在android中构建一个小的休息客户端。我只是尝试获取一个可以在以后解析的xml文件。但是我有一些编码问题。

无法识别ø和å等特殊字符。 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);  
    } 
}
提前谢谢。 最好的问候,肯尼思

1 个答案:

答案 0 :(得分: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