0

連絡できるWebサービスがありますが、数百のアドレスがあるため、返される結果の数を制限するために、Skip and Take整数をWebサービスに追加する必要がありました。以下に投稿されているのは、Web サービスに接続する Android メソッドですが、Android アプリ用に以下のアクティビティ コードを変更する方法を教えてください。

私の Android アクティビティ:

public List<FuelStops> getFuelStops() throws URISyntaxException, ClientProtocolException, IOException, ParserConfigurationException, SAXException{
    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    BufferedReader in = null;
    String page;
    fuelStopList = new ArrayList<FuelStops>();
    try {

        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet();
        request.setURI(new URI("http://google.com/Service1.asmx/GetFuelStops"));

        HttpResponse response = client.execute(request);
        in = new BufferedReader
        (new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {
            sb.append(line + NL);

        }
        in.close();
        page = sb.toString();
        FuelStops fuelStop=new FuelStops();
        StringBuilder addressStrBlder = new StringBuilder();
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(new StringReader(page)));
        // normalize the document
        doc.getDocumentElement().normalize();
        // get the root node
        NodeList nodeList = doc.getElementsByTagName("FuelStop");
        Node node=nodeList.item(0);
        // the  node has three child nodes
        for (int n = 0; n < nodeList.getLength(); n++) {


            for (int i = 0; i < node.getChildNodes().getLength(); i++) {
                Node temp=node.getChildNodes().item(i);
                if(temp.getNodeName().equalsIgnoreCase("Physical_Address_Street")){
                    addressStrBlder.append(temp.getTextContent());
                }
                else if(temp.getNodeName().equalsIgnoreCase("Physical_Address_Local")){
                    addressStrBlder.append(", " + temp.getTextContent());
                }
                else if(temp.getNodeName().equalsIgnoreCase("Physical_Address_State")){
                    addressStrBlder.append(", " + temp.getTextContent());
                }
                else if(temp.getNodeName().equalsIgnoreCase("Physical_Address_Zip")){
                    addressStrBlder.append(", " + temp.getTextContent());
                    fuelStop.setAddress(addressStrBlder.toString());
                }
                else if(temp.getNodeName().equalsIgnoreCase("Phone_Number")){
                    fuelStop.setPhoneNum(temp.getTextContent());
                    fuelStopList.add(fuelStop);
                }

            }
            //Log.e("Fuel Stop", fuelStop.toString());
        }

        //System.out.println(page);
        } finally {
        if (in != null) {
            try {
                in.close();
                } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return fuelStopList;
}

私のウェブサービス ここに画像の説明を入力

4

1 に答える 1

1

Web サービスが標準の HTTP 要求パラメーターを受け取る場合は、それらを URL に追加するだけです。

request.setURI(new URI("http://google.com/Service1.asmx/GetFuelStops?skip=10&take=10"));

これは GET で機能しますが、POST では (HttpGet の代わりに) HttpPost クラスを使用して次のようにする必要があります。

HttpPost request = new HttpPost("http://google.com/Service1.asmx/GetFuelStops");

// Add your data
List<NameValuePair> nvps = new ArrayList<NameValuePair>(2);
nvps.add(new BasicNameValuePair("skip", "10"));
nvps.add(new BasicNameValuePair("take", "10"));
request.setEntity(new UrlEncodedFormEntity(nvps));
于 2013-04-23T19:13:28.253 に答える