HttpClientでpost.xmlを取得するためのアンドロイドアプリを開発したいと思います。しかし、それは80ポートでコンテンツを取得できませんでした。アンドロイドアプリがHttpClientで80ポートでコンテンツを取得できませんでした
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 Appは長さがコンテンツを取得できないため、それは
。さらに、応答がresponsep.getStatusLine()と "HTTP/1.1 200 OK" である。
このURIが正しくブラウザ(PCとAndroidエミュレータの両方)で開くことができる。ここで-1だそれはと関連しています"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();
//次の2つの別々の問題を持っているように見えるコンテンツ
System.out.println("The content length is: "+length);
Log.d("posts", "The content length is: " + length);
Stephen C so much!ありがとうございました!ええ、私は80ポートでWEBrickを始めました。それはうまく動作します。だからポートとは何の関係もない。違いはNginxとWEBrickの間のWebサーバーです。 – Leslin
私は、firebugを使ってヘッダとレスポンスを分析し、Nginxのヘッダにcontent-lengthが含まれていないことを確認します。あなたが言ったように、それはここで-1を返します。対照的に、WEBrickからの応答は内容の長さを持っています。 – Leslin
@Leslin - そうだね。あなたの元の質問は理解するのが難しく、私は誤解しました。あなたはWEBrickがまったく動いていないと言っているようでした。 WEBrickとNginxの違いは、単純に応答を別々に実装することです。どちらも正当な(有効な)実装です。実際の問題は、Webサーバーが常に「Content-length」ヘッダーを設定することをアプリケーションが想定していることです。それは**間違った**仮定です。 –