2010-03-01 17 views
1

我有一個朋友寫了一個servlet,它只是提供XML(只是XML,沒有SOAP等,Content-Type: text/xml)。android與網頁溝通,得到502錯誤

現在我試圖使用android訪問它。如果我使用Firefox瀏覽頁面,我可以訪問該頁面,但如果使用我的Android應用程序訪問它,我會得到一個HTTP 502 error

我正在使用的代碼是:

AlertDialog alertDialog; 
HttpClient httpClient = new DefaultHttpClient(); 
HttpContext localContext = new BasicHttpContext(); 
HttpGet httpGet = new HttpGet("x"); 
try { 
    HttpResponse response = httpClient.execute(httpGet, localContext); 
    alertDialog = new AlertDialog.Builder(view.getContext()).create(); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      return; 
     } 
    }); 
    alertDialog.setTitle("Response"); 
    alertDialog.setMessage(response.getStatusLine().toString()); 
    alertDialog.show(); 

    alertDialog.setMessage(EntityUtils.toString(response.getEntity())); 
    alertDialog.show(); 
} catch (IOException e) { 
    alertDialog = new AlertDialog.Builder(view.getContext()).create(); 
    alertDialog.setTitle("Sorry"); 
    alertDialog.setMessage("There was a problem connecting to the login-service."); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      return; 
     } 
    }); 
    alertDialog.show(); 
} 

以及是否有任何建議的方式來解析XML?就像是如果有一個特定的標籤,如標題,消息,...

回答

0

對於連接問題,我會建議如下:這似乎是代理或與您嘗試連接的方法有問題。通常它會是一個代理,它不能將請求轉發到特定的服務器。但在這種情況下,您可以通過FireFox查看該網站,這不應該是那個問題。您可以嘗試使用FireBug插件分析到該服務器上的請求。 不管怎樣,試試這個方法,而不是HTTPGET:

HttpReq request = Http.getInstance().createRequest(); 
request.setUrl("URL"); 
request.setMethod("GET"); 
request.execute(); 
message = request.getResult(); 

你可以嘗試的另一件事是,使用HTTPGET並與setFollowRedirects(真/假)來播放。也許你必須關掉它或明確地打開它。

對於XML問題,我建議這個網站:http://www.ibm.com/developerworks/xml/library/x-android/,這幫助我解析一些RSS源。就我個人而言,我更喜歡該網站上的SAX解析器(他們引入了一些技術)。