2

ウル:

http://23.23.82.251:9116/solr/db/select?q=*:*+_val_:%22geodist%28%29%22&fq=(ProviderType:10)&rows=100&wt=json&indent=true&fl=ProviderID,ProviderType,ProviderName,ProviderAddress,CityAreaID,CityAreaName,City,State,Latlong,score&fq={!geofilt}&sfield=Latlong&pt=20.296059,85.82454&d=5&sort=geodist()%20asc

投稿リクエストでAndroidでこのURLを使用しようとすると、次のエラーが発生します。

10-22 13:54:49.946: E/SearchResult(6659): Exception Name = java.lang.IllegalArgumentException

URLEncoder.encode() を使用しましたが、それでも同じエラーが発生します。私が間違って書いている場所を提案できますか。以下のコードを使用しています

            HttpParams httpParameters = new BasicHttpParams();
            // Set the timeout in milliseconds until a connection is established.
            // The default value is zero, that means the timeout is not used. 
            int timeoutConnection = 10000;

            HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);

            // Set the default socket timeout (SO_TIMEOUT) 
            // in milliseconds which is the timeout for waiting for data.
            int timeoutSocket = 15000;
            HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);               
            httpclient = new DefaultHttpClient(httpParameters);             

            HttpPost httppost = new HttpPost(url here);
            JSONObject json = new JSONObject();
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity httpEntity = response.getEntity();
            InputStream instream = httpEntity.getContent();
            String result= Utilities.convertStreamToString(instream);

            json=new JSONObject(result);
4

3 に答える 3

8

URL 全体をエンコードしないでください。

http%3A%2F%2F23.23.82.251%3A9116%2Fsolr%2Fdb%2Fselect%3Fq%3D*%3A*%2B_val_%3A%2522geodist%2528%2529%2522%26fq%3D(ProviderType%3A10)%26rows%3D100%26wt%3Djson%26indent%3Dtrue%26fl%3DProviderID%2CProviderType%2CProviderName%2CProviderAddress%2CCityAreaID%2CCityAreaName%2CCity%2CState%2CLatlong%2Cscore%26fq%3D{!geofilt}%26sfield%3DLatlong%26pt%3D20.296059%2C85.82454%26d%3D5%26sort%3Dgeodist()%2520asc

URLとして使用されています。通常の HTTP URL として解析できないため、これは失敗します。

代わりに、使用してみてくださいnew HttpPost("http://23.23.82.251:9116/...");

于 2012-10-22T08:20:39.170 に答える
0

この方法を試してください..

HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "test"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
于 2012-10-22T08:28:50.117 に答える
-3

これを試してください..

URLEncoder.encode("<url here>", "UTF-8");
于 2012-10-22T08:20:11.947 に答える