我想開發一個android應用程序來獲取post.xml與HttpClient。但它沒有得到80端口的內容。android應用程序無法獲取80端口的內容與HttpClient
如果我用3000端口啓動web服務器(WEBrick在這裏),則URI是http://192.168.1.103:3000/posts.xml; Android應用可以獲得正確長度的響應,如568;
相同的Web文件,我用80端口開始將它們與其他服務器(Nignx這裏),URI是 「http://192.168.1.103/posts.xml; Android應用無法與長度獲取內容,這是-1這裏。
這個URI可以用瀏覽器(PC和Android模擬器)正確地被打開。此外,回答是 「HTTP/1.1 200 OK」 與responsep.getStatusLine()。
是否與相關「1024以下的套接字端口不能訪問像Linux系統」,這是在 http://groups.google.com/group/android-developers/browse_thread/thread/660123ca64ba1229#
任何忍者可以告訴我,如果我可以做什麼,我應該怎麼做獲得80端口的內容?
以下是我的代碼。
public class AndroidWorldActivity extends Activity當活動首次創建時調用。 */
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
retreiveProjects();
}
private void retreiveProjects()
{
HttpClient httpClient = new DefaultHttpClient();
try
{
String url3000 = "http://192.168.1.103:3000/posts.xml";
String url = "http://192.168.1.103/posts.xml";
Log.d("posts", "performing get " + url3000);
HttpGet httpGet=new HttpGet(url3000);
HttpResponse responsep=httpClient.execute(httpGet);
System.out.println(responsep.getStatusLine());
HttpEntity httpEntity = responsep.getEntity();
int length = (int) httpEntity.getContentLength();
//打印內容
System.out.println("The content length is: "+length);
Log.d("posts", "The content length is: " + length);
非常感謝Stephen C!是的,我開始使用80端口的WEBrick。它工作正常。所以這與端口無關。那麼Nginx和WEBrick之間的web服務器有什麼區別。 – Leslin
我使用firebug來分析標題和響應,並發現Nginx的標題不包含內容長度。正如你所說,這就是爲什麼它在這裏返回-1。相反,WEBrick的響應具有內容長度。 – Leslin
@萊斯林 - 我明白了。你原來的問題很難理解,我誤解了。你似乎在說WEBrick根本不工作。 WEBrick和Nginx的區別在於它們只是簡單地實現了不同的響應。兩者都是合法的(有效)實施。真正的問題是,您的應用程序假設Web服務器將始終設置「Content-length」標頭。這是**錯誤的假設。 –