我创建了一个java ME应用程序(原型),现在我需要从MIDlet中使用我的WEB API服务.
首先,是否有可能从MIDlet中使用Web API服务?我已经将我的WCF转换为Web API,这样我就可以让我的J2ME应用程序以更直接的方式访问我的服务.问题是我不知道如何从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.
提前致谢.
我认为大多数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