我已经创建了一个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,但是所有的信息都是如此混乱,我能找到的唯一好的教程是这个,问题是它使用KXML,根据这个页面是不赞成的
如果你们中有人曾经使用过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