繁体   English   中英

访问Web服务的返回值

Access Webservice return value

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个Web服务,它返回对象的数组列表。 我想在我的android代码中访问此对象的arraylist。 我该怎么做? 我的网络服务是

package com.chillum.first;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

@Path("/hello")
public class ServerSide {

@GET
public ArrayList<myClass> Print (@QueryParam("param1") String key) throws IOException, InterruptedException
{
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("MMddyyyyhmmss");
    String formattedDate = sdf.format(date);
    String command = "cmd /c start /wait C:\\python27\\tutorial\\check.bat "+key+" "+formattedDate;
    Process p=Runtime.getRuntime().exec(command);
    p.waitFor();
    myClass[] flipkart=new myClass[500];
    myClass[] amazon=new myClass[500];
    myClass[] myntra=new myClass[500];
    myClass[] jabong=new myClass[500];
    myClass[] shopclues=new myClass[500];
    myClass[] hs18=new myClass[500];
    myClass[] indiatimes=new myClass[500];
    myClass[] croma=new myClass[500];

    String xmlFileNames[]=new String[8];
    xmlFileNames[0]="C:/python27/tutorial/"+formattedDate+"flipkart.xml";
    xmlFileNames[1]="C:/python27/tutorial/"+formattedDate+"amazon.xml";
    xmlFileNames[2]="C:/python27/tutorial/"+formattedDate+"myntra.xml";
    xmlFileNames[3]="C:/python27/tutorial/"+formattedDate+"jabong.xml";
    xmlFileNames[4]="C:/python27/tutorial/"+formattedDate+"shopclues.xml";
    xmlFileNames[5]="C:/python27/tutorial/"+formattedDate+"hs18.xml";
    xmlFileNames[6]="C:/python27/tutorial/"+formattedDate+"indiatimes.xml";
    xmlFileNames[7]="C:/python27/tutorial/"+formattedDate+"croma.xml";

    String[] domain=new String[8];
    domain[0]="http://www.flipkart.com";
    domain[1]="";
    domain[2]="http://www.myntra.com";
    domain[3]="";
    domain[4]="http://www.shopclues.com";
    domain[5]="http://www.homeshop18.com";
    domain[6]="http://www.shopping.indiatimes.com";
    domain[7]="http://www.cromaretail.com/";


    try {
        random(flipkart, xmlFileNames[0], domain[0]);
        random(amazon, xmlFileNames[1], domain[1]);
        random(myntra, xmlFileNames[2], domain[2]);
        random(jabong, xmlFileNames[3], domain[3]);
        random(shopclues, xmlFileNames[4], domain[4]);
        random(hs18, xmlFileNames[5], domain[5]);
        random(indiatimes, xmlFileNames[6], domain[6]);
        random(croma, xmlFileNames[7], domain[7]);

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ArrayList<myClass> all= new ArrayList<myClass>();
    for(int i=0, j=0; i<50; i++, j++)
    {
        try
        {
            all.add(flipkart[i]);
            all.add(amazon[i]);
            all.add(myntra[i]);
            all.add(jabong[i]);
            all.add(shopclues[i]);
            all.add(hs18[i]);
            all.add(indiatimes[i]);
            all.add(croma[i]);
        }
        catch(NullPointerException npe)
        {
        }
            continue;
    }
    return all;
}
public static void random(myClass[] obj, String fileName, String domain) throws Exception
{
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    try
    {
        Document document = builder.parse(new InputSource(new FileReader( new File(fileName))));
        NodeList title = document.getElementsByTagName("title");
        NodeList price = document.getElementsByTagName("price");
        NodeList link = document.getElementsByTagName("link");
        NodeList image = document.getElementsByTagName("image");
        for (int i = 0; i < title.getLength(); i++) {
            int objcount=0;
            NodeList titleChildList = title.item(i).getChildNodes();
            NodeList priceChildList = price.item(i).getChildNodes();
            NodeList linkChildList = link.item(i).getChildNodes();
            NodeList imageChildList = image.item(i).getChildNodes();
            for (int j = 0; j < titleChildList.getLength(); j++) {
                obj[objcount]=new myClass();
                Node titleChildNode = titleChildList.item(j);
                if ("value".equals(titleChildNode.getNodeName())) {

                    obj[objcount].title=titleChildList.item(j).getTextContent()
                            .trim();
                }
                Node priceChildNode = priceChildList.item(j);
                if ("value".equals(priceChildNode.getNodeName())) {
                    obj[objcount].price=priceChildList.item(j).getTextContent()
                            .trim();
                }   
                Node linkChildNode = linkChildList.item(j);
                if ("value".equals(linkChildNode.getNodeName())) {
                    obj[objcount].link=domain+linkChildList.item(j).getTextContent()
                        .trim();
                }
                Node imageChildNode = imageChildList.item(j);
                if ("value".equals(imageChildNode.getNodeName())) {
                    obj[objcount].image=imageChildList.item(j).getTextContent()
                        .trim();
                }
                objcount++;
            }
        }   
    }
    catch(NullPointerException npe) {
    }

}

}

我返回到android的java类是

package com.example.chillum;

import android.net.http.AndroidHttpClient;

import com.example.chillum.Utils;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.util.EntityUtils;

import java.util.ArrayList;

public class HttpManager {

public static ArrayList<myClass> getdata(String uri)
{
    AndroidHttpClient client=AndroidHttpClient.newInstance("AndroidAgent");
    HttpGet request=new HttpGet(uri);
    HttpResponse response;
    try{
        response=client.execute(request);
        return //what?;
    }
    catch(Exception e)
    {
        e.printStackTrace();
        return null;
    }
    finally
    {
        client.close();
    }
}
}

我应该返回什么以获取阵列列表? 此方法返回到异步任务,其中其他操作将通过arraylist完成。 请帮忙。

1 个回复

您无法使用HTTP将Java对象从服务器传输到客户端。 HTTP使用基本的ASCII文本来传输数据(因此称为超文本传输协议)。

需要使用的解决方法是使用标准标记语言对从服务器发送的数据进行编码。 目前主要使用的是JSON和XML。

JSON看起来像这样:

{ 
"company": Volkswagen,
"name": "Vento",
"price": 800000
}

XML看起来像这样:

<car>
<company>Volkswagen</company>
<name>Vento</name>
<price>800000</price>
</car>

简单来说:在发送给客户端请求之前,您必须将要发送的对象转换为JSON / XML。 然后,在客户端使用JSON解码功能取回该对象。

有大量的教程来展示如何使用JSON / XML在服务器和Android Activity之间传输数据。

希望这可以帮助。

1 Web服务返回自动递增数据库中的值

我们有一个要求,我们将拥有一个自动生成的字段值。 自动值的格式应为Currentyear-Dept-001。取决于Dept,计数器需要递增,例如,如果部门是English,则下一个2016-English-001是2016-English-002,如果该部门是Maths,则该计数器需要从第一个 ...

3 同步对返回值的访问

考虑以下C ++成员函数: 这里的目的不是同步访问私有成员变量m_size ,而只是为了确保调用者收到m_size的有效值。 我们的目标是防止函数返回m_size在一些其它线程正在修改的同时m_size 。 但调用此功能是否涉及任何潜在的竞争条件? 我不确定这里的RAII风格锁 ...

4 Access 查询中的返回值

我需要有关 Access 中查询的帮助。 我需要返回一个客户名称,该客户名称在截至今天的日期的过去 14 天内有三个或更多订单仍然有效。 它还应该在结果中显示订单日期。 这将填充在报告中并按“客户名称”分组并显示每个“订单日期”。 我尝试使用查询向导并输入下面的 sql 但它没有填充任何结果。 有人 ...

5 访问返回值

假设我有这个功能: 我想递归地调用此函数,并在每次调用时修改/更新返回值(元组的2个元素)。 问题是我不知道如何模式匹配元组以便在列表中的每个函数的调用元素(返回的元组的第一个参数)中添加。 ...

2017-04-29 13:03:54 1 67   haskell
6 使用Web服务提交的返回值更新信息路径字段?

是否可以通过调用提交给Web服务的结果来更新信息路径字段? 我们有一个infopath表单,用于在数据库中创建项目。 我想在信息路径表单中为该项目的ID(主键)添加一个只读字段,当表单通过返回值提交给Web服务时,该字段将被填充。 是否可以通过“设置字段的值”操作将返回值用作规则的一部分? ...

7 3 列在 Access 中返回一个值

3 列按顺序返回一个值,列中可能并不总是有一个值。 第 1 列是主要的。 第 2 列是次要的。 第 3 列是第三列。 第 4 列是返回值。 如果第 1 列中有值,则返回第 4 列中的值。如果第 1 &amp; 2 列中有值,则返回第 4 列中的第 1 列值。如果第 1 &amp; 2 &amp; ...

9 访问我班上的返回值

我的app_code文件夹中有一个类,名为 myClass.cs 我将结果添加到此处的会话变量中,但不确定这是否是解决此问题的最有效方法。 有没有一种方法可以在不创建会话的情况下访问客户端代码上的返回值? ...

10 Webservice返回NPE中的注入

尝试将豆子注入Web服务中时,我总是得到NullPointerException。 看到: package br.com.ewatt.webservice; import javax.inject.Inject; import javax.ws.rs.GET; import javax ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM