这一定是非常愚蠢的事情,现在试图解决这个问题几天,但它真的不起作用。我到处搜索,可能有人有同样的问题,但我似乎找不到。
我正在开发一个 Android 应用程序,这个应用程序从网站上提取了一些 xml。由于这个网站宕机了很多,我决定保存它并在本地运行它。现在我做了什么:
- 我下载了用于托管下载的 xml 文件的 kWs 应用程序。
- 我将文件放在正确的目录中,并且可以通过移动浏览器访问它,但不能通过我的应用程序访问(与我从其他网站拉取文件时使用的代码相同,不是由我托管,唯一的区别显然是 URL)。
因此,我尝试将其托管在我的 PC 上并从那里使用我的应用程序访问它。同样的结果,移动浏览器找到它没有问题,但应用程序一直说404 Not Found: "The requested URL /test.xml&parama=Someone&paramb= was not found on this server."
注意:不要介意我发送的 2 个参数,我需要它来从不是我托管的网站上获取正确的东西。
我的代码:
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,并且在我的移动设备上使用默认浏览器和 chrome。
我正在使用 MoWeS 在我的 PC 上托管网站。
任何帮助将不胜感激,如果您在找到此问题的答案之前需要了解任何信息,我将非常乐意为您提供该信息。
谢谢你的时间!
干杯。