Вызов restfull Webservice выдает ошибку в URI - PullRequest
0 голосов
/ 17 февраля 2012

Я написал логику, которая вызывает веб-сервис Android, передавая несколько параметров. Проблема в том, что когда я отправляю запрос, он возвращает сообщение об ошибке, которое я получаю как XML. URL, который я хочу позвонить, http://192.168.1.10:8080/ymaws/resources/restaurantcityid=33498&areanm=vasant вихар но я получаю ошибку. Код ниже. Пожалуйста, предложите хороший способ сделать это

String list = null;
                restaurantnames=new ArrayList<String> ();   
                areanames=new ArrayList<String>();
                restaurantidlist=new ArrayList<String>();

                final HttpClient client=new DefaultHttpClient();
                                    String url = "http://192.168.1.10:8080/ymaws/resources/restaurant?cityid="+cityid+"&areanm="+area.getSelectedItem().toString();
                String encodedurl = null;
                try
                {
                        encodedurl = URLEncoder.encode(url,"UTF-8");
                } 
                catch (UnsupportedEncodingException e1) 
                {
                        e1.printStackTrace();
                }
                Log.i("TEST", encodedurl);

                final HttpGet req=new HttpGet(encodedurl);
                HttpResponse httpResponse;
                try {
                        httpResponse=client.execute(req);
                        HttpEntity entity = httpResponse.getEntity();
                        Log.i("entity", entity.toString());
                        if (entity != null) 
                        {
                            InputStream instream = entity.getContent();
                            BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
                            StringBuilder sb = new StringBuilder();

                            String line = null;
                            try 
                            {
                                while ((line = reader.readLine()) != null) 
                                {
                                    sb.append(line + "\n");
                                }
                            } 
                            catch (IOException e) 
                            {
                                e.printStackTrace();
                            } 
                            finally 
                            {
                                try 
                                {
                                    instream.close();
                                }
                                catch (IOException e)
                                {
                                    e.printStackTrace();
                                }
                            }

                            // Closing the input stream will trigger connection release
                            list= sb.toString();
                            Log.i("list xml is", list.toString());

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Попробуйте просто добавить "amp;"после знака «&».(не мог написать & + amp, так как SO сделал это только для "&" хе-хе) :)

0 голосов
/ 17 февраля 2012

Для этого может потребоваться использование библиотек Apache с открытым исходным кодом, но это работает для меня во всем моем коде:

public static String getHTTP(String url) throws ClientProtocolException, IOException {
        String result = "";     
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(url);
        ResponseHandler<String> responseHandler = new BasicResponseHandler();           

        // Execute HTTP Get Request
        result = httpclient.execute(httpget, responseHandler);
        return result;
}

Необходимые библиотеки:

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.ClientProtocolException;
import java.io.IOException;

Вы можете получить JAR-файл Apache Http Client здесь

...