我想开发一个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”标头。这是**错误的假设。 –