gpt4 book ai didi

适用于 Android 的 Java REST 客户端 API

转载 作者:IT老高 更新时间:2023-10-28 21:09:07 26 4
gpt4 key购买 nike

我的服务器应用程序使用 JAX-RS(Jersey 实现)公开了一个 RESTful Web 服务。调用此服务的最佳方法是什么(使用 Apache HttpClient 除外)?我想知道 Jersey、ReSTLet、RESTeasy 和其他框架的 REST Client API 是否适用于 Android。

谢谢,西奥

最佳答案

Resteasy-mobile是一个完美的解决方案。

它基本上是成熟的 resteasy(有客户端框架),但使用 Apache HTTP 客户端而不是 HttpURLConnection(在 android 上不存在)

这里有更多关于使用的信息(http://docs.jboss.org/resteasy/docs/2.3.1.GA//userguide/html_single/index.html#RESTEasy_Client_Framework)

这是给专家的

    <dependency>
<groupId>org.jboss.resteasy.mobile</groupId>
<artifactId>resteasy-mobile</artifactId>
<version>1.0.0</version>
</dependency>

android端的一个小示例代码

    public class RestServices {
static RegisterSVC registerSVC;
static PushSVC pushSVC;
static TrackerSVC trackerSVC;

RestServices() {
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
}

public static RegisterSVC getRegisterSVC() {
return ProxyFactory.create(RegisterSVC.class,"http://143.248.194.236:8080/notification");

}

public static PushSVC getPushSVC() {
return ProxyFactory.create(PushSVC.class,"http://143.248.194.236:8080/notification");
}

public static TrackerSVC getTrackerSVC() {
return ProxyFactory.create(TrackerSVC.class,"http://143.248.194.236:8080/notification");
}
}

Android 端和服务器端的 JAX-RS 服务定义 (PushSVC.java)

@Path("/mobile")
public interface PushSVC {
/*
Sample
curl --data '{"collapseKey":"asdf","contentList":{"aaaa":"you","ssss":"you2"}}' -X POST -H 'Content-type:application/json' -v http://localhost:8080/notification/mobile/11111/send
*/
@POST
@Path("/{uuid}/send")
@Consumes(MediaType.APPLICATION_JSON)
String sendPush( MessageVO message, @PathParam("uuid") String uuid);

}

模型 MessageVO 定义

public class MessageVO {
String collapseKey;
HashMap<String, String> contentList;

public MessageVO() {
}

public MessageVO(String collapseKey) {
this.collapseKey = collapseKey;
contentList = new HashMap<String, String>();
}

public void put(String key, String value)
{
this.contentList.put(key,value);
}

public String getCollapseKey() {
return collapseKey;
}

public HashMap<String, String> getContentList() {
return contentList;
}
}

这是android上的方法调用

public class Broadcast extends AsyncTask<Context,Void,Void>
{

@Override
protected Void doInBackground(Context... contexts) {
MessageVO message = new MessageVO("0");
message.put("tickerText","Ticker ne` :D");
message.put("contentTitle","Title ne` :D");
message.put("contentText","Content ne` :D");
RestServices.getPushSVC().sendPush(message,TrackInstallation.id(contexts[0]).toString());
return null;
}
}

这很简单,所有编写的代码都可以重用,样板代码几乎不存在

希望对大家有所帮助。

关于适用于 Android 的 Java REST 客户端 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4368047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com