2

これは本当にばかげているに違いありません。この問題を数日間解決しようとしていますが、実際には機能していません。あちこち探しましたが、おそらく同じ問題を抱えている人がいると思いますが、見つけられないようです。

私は Android アプリに取り組んでおり、このアプリは Web サイトからいくつかの xml を取得します。この Web サイトは頻繁にダウンしているため、保存してローカルで実行することにしました。今私がしたこと:

  • ダウンロードした xml ファイルをホストする kWs アプリをダウンロードしました。
  • ファイルを適切なディレクトリに配置し、モバイル ブラウザーからアクセスできましたが、アプリではアクセスできませんでした (私がホストしていない他の Web サイトからプルするときに使用したのと同じコードで、違いは明らかに URL だけでした)。

そこで、PC でホストして、そこからアプリでアクセスしようとしました。繰り返しますが、同じ結果でした。モバイル ブラウザは問題なく検索できましたが、アプリは言い続けました。404 Not Found: "The requested URL /test.xml&parama=Someone&paramb= was not found on this server."

注:送信している 2 つのパラメーターは気にしないでください。私がホストしていない Web サイトから適切なものを取得するために必要でした。

私のコード:

public String getStuff(String name){
        String URL = "http://10.0.0.8/test.xml";

        ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(2);
        params.add(new BasicNameValuePair("parama", name));
        params.add(new BasicNameValuePair("paramb", ""));

        APIRequest request = new APIRequest(URL, params);
        try {
                RequestXML rxml = new RequestXML();
                AsyncTask<APIRequest, Void, String> a = rxml.execute(request);
                ...
        } catch(Exception e) {
                e.printStackTrace();
        }
        return null;
}

それは正しく機能するはずです。今RequestXMLクラスの部分:

class RequestXML extends AsyncTask<APIRequest, Void, String>{
        @Override
        protected String doInBackground(APIRequest... uri) {
                HttpClient httpclient = new DefaultHttpClient();
                String completeUrl = uri[0].url;

        // ... Add parameters to URL ...

                HttpGet request = null;
                try {
                        request = new HttpGet(new URI(completeUrl));
                } catch (URISyntaxException e1) {
                        e1.printStackTrace();
                }

                HttpResponse response;
                String responseString = "";
                try {
                        response = httpclient.execute(request);
                        StatusLine statusLine = response.getStatusLine();
                        if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                        // .. It crashes here, because statusLine.getStatusCode()
                        // returns a 404 instead of a 200.
  • xml は単純な xml であり、特別なことは何もありません。.htaccessファイルの内容を「ALLOW FROM ALL」に変更しました (モバイル デバイスのブラウザがアクセスでき、正しい xml が表示されるため、動作します)。

  • 私は Android 4.0.4 を実行しており、モバイル デバイスでデフォルトのブラウザとクロムを使用しています。

  • PC で Web サイトをホストするために MoWeS を使用しています。

この問題の解決策を見つける前に何か知っておく必要がある場合は、喜んでその情報をお知らせします。

ありがとうございました!

乾杯。

4

1 に答える 1

4

ファイル名の後の疑問符を見逃していると思います

/test.xml?¶ma=誰か¶mb=

于 2012-12-18T23:01:04.313 に答える