访问php web服务时出错

访问php web服务时出错,php,android,web-services,http,Php,Android,Web Services,Http,我正在让我的Web服务用php编写,托管在byethost.com上 它在浏览器和“”上工作正常。 但当我从android应用程序调用服务时,它给出了错误 05-06 00:31:34.475:E/AndroidRuntime(24246):java.lang.IllegalArgumentException:主机名不能为空 05-06 00:31:34.475:E/AndroidRuntime(24246):位于org.apache.http.HttpHost.(HttpHost.java:8

我正在让我的Web服务用php编写,托管在byethost.com上 它在浏览器和“”上工作正常。 但当我从android应用程序调用服务时,它给出了错误

05-06 00:31:34.475:E/AndroidRuntime(24246):java.lang.IllegalArgumentException:主机名不能为空 05-06 00:31:34.475:E/AndroidRuntime(24246):位于org.apache.http.HttpHost.(HttpHost.java:83) 05-06 00:31:34.475:E/AndroidRuntime(24246):位于org.apache.http.impl.client.AbstractHttpClient.DeterminateTarget(AbstractHttpClient.java:519) 05-06 00:31:34.475:E/AndroidRuntime(24246):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509) 05-06 00:31:34.475:E/AndroidRuntime(24246):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 05-06 00:31:34.475:E/AndroidRuntime(24246):位于com.shreji.jsonparser.jsonparser.getJSONFromUrl(jsonparser.java:47) 05-06 00:31:34.475:E/AndroidRuntime(24246):在apidatahandler.TilesApiCall.gettilesadetails(TilesApiCall.java:23) 05-06 00:31:34.475:E/AndroidRuntime(24246):在com.shreejitiles.android.Ui_主页$1.run(Ui_主页.java:41) 05-06 00:31:34.475:E/AndroidRuntime(24246):在java.lang.Thread.run(Thread.java:856)

请帮帮我

我用来解析从服务器获取响应的代码

package com.shreeji.jsonparser;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    public JSONObject getJSONFromUrl(String url, List<NameValuePair> params)
            throws ClientProtocolException, IOException, JSONException {

        Log.i("url", url);

        // Making HTTP request

        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        httpPost.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

        BufferedReader reader = new BufferedReader(new InputStreamReader(is,
                "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();

        jObj = new JSONObject(json);

        // return JSON String
        return jObj;

    }
}
package com.shreji.jsonparser;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.UnsupportedEncodingException;
导入java.util.List;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.util.Log;
公共类JSONParser{
静态InputStream为空;
静态JSONObject jObj=null;
静态字符串json=“”;
//建造师
公共JSONParser(){
}
公共JSONObject getJSONFromUrl(字符串url,列表参数)
抛出ClientProtocolException、IOException、JSONException{
Log.i(“url”,url);
//发出HTTP请求
//defaultHttpClient
DefaultHttpClient httpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url);
setEntity(新的UrlEncodedFormEntity(参数));
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
is=httpEntity.getContent();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,
“iso-8859-1”),第8节);
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
json=sb.toString();
jObj=新的JSONObject(json);
//返回JSON字符串
返回jObj;
}
}

这是因为您尚未为您的请求设置主机url。

我将url设置为与我尝试在浏览器中设置的相同,但在浏览器中运行良好,而在android应用程序中运行不正常。这是否也起作用,但不会出现相同的错误消息。我还试着请求url或Hull。但是在那里它不起作用。不过,它在我的浏览器中运行良好。您错误地初始化了httpPost。它的URI不是URL。试试这个->
HttpPost-HttpPost=newhttppost(newuri(url))
Bro上面发布的相同代码适用于其他服务器上托管的其他API您可以尝试使用
HttpPost-HttpPost=new-HttpPost(new-URI(url))一次?同样,如果它不能解决问题,您能否检查
url
param的值是多少?