【问题标题】:cast StringArray to String[] inside SOAP client在 SOAP 客户端中将字符串数组转换为字符串 []
【发布时间】:2013-08-31 20:14:11
【问题描述】:

我有一个返回 ArrayList<String[]> 的 SOAP webservice 服务。当我从客户端调用它时,eclipse 告诉我该服务不返回 ArrayList<String[]>List<StringArray>

StringArray 似乎不是 java 数据类型,我知道如何将其转换为 String[] 并从中提取数据。

这是客户端导入的文件,包含检索数据的方法:

@WebService(name = "Functions", targetNamespace = "http://example.com/")
@XmlSeeAlso({
    ObjectFactory.class
})
public interface Functions {


/**
 * 
 * @return
 *     returns java.util.List<com.example.StringArray>
 */
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "getData", targetNamespace = "http://example.com/", className = "com.example.GetData")
@ResponseWrapper(localName = "getDataResponse", targetNamespace = "http://example.com/", className = "com.example.GetDataResponse")
@Action(input = "http://example.com/Functions/getDataRequest", output = "http://example.com/Functions/getDataResponse")
public List<String[]> getData();

这是该函数在服务器上的声明方式:

@WebMethod
public ArrayList<String[]> getData() {
    // invoked by android app
    dataStore = DatastoreServiceFactory.getDatastoreService();
    ArrayList<Entity> list = (ArrayList<Entity>) dataStore.prepare(query).asList(FetchOptions.Builder.withLimit(100));

    if (!list.isEmpty()) {
        ArrayList<String[]> res=new ArrayList<String[]>();
        String[] to_add;
        // convert entity into strings
        for (Entity current : list) {
            to_add=new String[3];
            to_add[0]=String.valueOf(current.getProperty(TEMP_ROW));
            to_add[1]=String.valueOf(current.getProperty(HUM_ROW));
            to_add[2]=String.valueOf(current.getProperty(DATE_ROW));

            res.add(to_add);
        }
        return res;
    }

    return null;
}

【问题讨论】:

  • 我认为你应该提供一些代码。
  • 从我的项目中添加代码

标签: java google-app-engine soap-client arrays


【解决方案1】:

您可以使用Collection 中的toArray() 方法

List<String> myList = myClient.getData();
String[] myArray = myList.toArray();

【讨论】:

  • 也许我自己解释错了。服务器上声明的服务返回 ArrayList,而不是 ArrayList。我不能在 List 变量上调用 myClient.getData,因为 eclipse 告诉我 getData 返回 List
  • 嗯,好吧,错过了那个细节。但是,服务器上的实现并不重要。它是一个 Web 服务,数据以肥皂 XML/请求的形式发送。重要的是您的客户正在做什么。传输列表列表听起来并不理想。你为什么不发送一个特定的类型呢?
  • 因为该方法从数据存储中检索数据列表,并且每个 String[] 包含单个检索到的实体的所有属性。
猜你喜欢
  • 2011-06-18
  • 2017-11-27
  • 2021-05-09
  • 2023-03-19
相关资源
最近更新 更多