質問

Android Webサービスをいくつかのパラメーターに渡すというロジックを書きました。問題は、クエリを送信すると、XMLとして取得しているエラーメッセージを返します。私が呼びたいURLはですhttp://192.168.1.10:8080/ymaws/Resources/RestaurantCityId = 33498&areanm=vasant viharしかし、私はエラーを取得しています。コードは以下にあります。 PLZはこれを行う良い方法を示唆しています

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());
役に立ちましたか?

解決

単に「アンプ」を追加してみてください。 「&」サインの後。 (それが "&" heheだけになったので、一緒に書くことができませんでした):)

他のヒント

これには、ApacheのOpenSource Libsを使用する必要がある場合がありますが、すべてのコードで機能します。

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;
}

必要なLIBは次のとおりです。

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;

Apache HTTPクライアントジャーを入手できます ここ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top