如何从 Java ME 应用程序使用 ASP.NET Web API

Posted

技术标签:

【中文标题】如何从 Java ME 应用程序使用 ASP.NET Web API【英文标题】:How to consume ASP.NET Web API from a Java ME Application 【发布时间】:2014-05-16 13:50:05 【问题描述】:

我已经创建了一个 java ME 应用程序(原型),现在我需要从一个 MIDlet 使用我的 WEB API 服务。 首先,是否可以从 MIDlet 使用 Web API 服务?我已经将我的 WCF 转换为 Web API,以便我可以让我的 J2ME 应用程序以更直接的方式访问我的服务。问题是我不知道如何从 MIDlet 调用我的 Web API 方法。你做过类似的事情吗?有可以分享的链接吗?

编辑:

我已经找到了如何使用 Web API 中的方法,但仍然不知道如何将我从 Web API 中获得的内容变成可以真正显示在移动屏幕上的内容

这是我正在使用的代码:

HttpConnection connection = null;
InputStream is = null;

final ByteArrayOutputStream bos = new ByteArrayOutputStream();

byte[] response = null;

try 
    connection = (HttpConnection)Connector.open("http://myminimarket/api/customers/GetCustomers", Connector.READ);
    connection.setRequestMethod(HttpConnection.GET);

    connection.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");

    if (connection.getResponseCode() == HttpConnection.HTTP_OK) 
        is = connection.openInputStream();

        if (is != null) 
            int ch = -1;

            while ((ch = is.read()) != -1) 
                bos.write(ch);
            

            response = bos.toByteArray();
        
    
 catch (Exception e) 
    e.printStackTrace();
 finally 
    try 
        if (bos != null) 
            bos.close();            
        

        if (is != null) 
            is.close();
            is = null;
        

        if (connection != null) 
            connection.close();
            connection = null;
        
     catch (Exception e2) 
        e2.printStackTrace();
    

这是我从 GetCustomers 获得的 XML 示例:

<ArrayOfCustomer xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WSWebAPI.Helpers">
<Customer>
<codigoCli>30</codigoCli>
<direccion>MCDO. SAN MARTIN PSTO. Nº 06</direccion>
<nroID>26626315</nroID>
<nroTelef>365548</nroTelef>
<razonSocial>ABANTO CASTAÑEDA, PAULA</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<codigoCli>61</codigoCli>
<direccion>
JR. SANTA TERESA DE JUORNET MZA. L. LOTE 11 (FRENTE AL QUINDE-COSTADO DE FARMACIA)
</direccion>
<nroID>10414741067</nroID>
<nroTelef/>
<razonSocial>ACUÑA SIFUENTES, ILZE SOLEDAD</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<Customer>
<codigoCli>69</codigoCli>
<direccion>JR. JOSE GALVEZ Nº 478</direccion>
<nroID>15586005</nroID>
<nroTelef/>
<razonSocial>AEDO YANQUI, MARGARITA</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<Customer>
<codigoCli>115</codigoCli>
<direccion>JR. AMALIA PUGA Nº 1008 TELEF. 367878</direccion>
<nroID>10266028356</nroID>
<nroTelef/>
<razonSocial>ALARCON ZEGARRA, EDULFO</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<Customer>
<codigoCli>144</codigoCli>
<direccion>AV. EVITAMIENTO SUR Nº 1514</direccion>
<nroID>10267292588</nroID>
<nroTelef/>
<razonSocial>ALCANTARA GARCIA EDESBITA</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<Customer>
<codigoCli>194</codigoCli>
<direccion>
JR. 6 DE JULIO MZ. "C" LOTE 7 URB. LUIS ALBERTO SANCHEZ
</direccion>
<nroID>26956665</nroID>
<nroTelef>362648</nroTelef>
<razonSocial>ALVARADO CARDENAS, CONSUELO SOLEDAD</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
</ArrayOfCustomer>

现在我也读到我应该使用 kXML2 ,但是所有的信息都很混乱,我能找到的唯一好的教程是this one,问题是它使用了 KXML,according to this page 是已弃用

如果你们中的任何人曾经使用过 KXML2,我真的很感激你能帮助我。

附:目前我的服务返回 XML ,但如果你知道如何在 java ME 中使用 json 对象,我可以轻松地返回 json 。

提前致谢。

【问题讨论】:

拜托我真的需要一些帮助 ***.com/questions/2981296/json-parser-for-j2me @JigarJoshi 好的,这似乎就是我要找的。不幸的是,我看不到任何有关如何使用此 jar 的示例。 你可以google例子 @JigarJoshi 只有一个教程java-n-me.com/2010/11/java-me-and-json.html 和本教程所依据的文章,已经没有了:( 【参考方案1】:

我认为大多数 JavaME 开发人员只是通过调用网站 URL 来做到这一点,例如。例如

http://www.yourdomain.com/yourwebservice.aspx

然后yourwebservice.aspx 简单地返回数据。

对于我参与过的游戏中的高分系统,我会称之为

http://www.gamename.com/webservice.php?action=gethighscores

它会以纯文本形式输出高分,然后我的 MIDlet 会读取这些内容。

下面是一些读取返回值的例子:http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/javax/microedition/io/HttpConnection.html

【讨论】:

以上是关于如何从 Java ME 应用程序使用 ASP.NET Web API的主要内容,如果未能解决你的问题,请参考以下文章

从 j2me 应用程序向服务器发送 XML 数据

如何在j2me(java)中在一个屏幕中显示多个列表屏幕

如何有效地将巨大的 sql 表加载到 asp.net 应用程序内存中以进一步迭代它?

如何在 Java ME 中增加堆大小?

如何在 j2me(java) 中设置图像的高度和宽度

如何结合 J2me 波兰语创建 J2me(java)Project