Articles of rest

如何在Android中使用Retrofit 2将应用程序逻辑从networking层分离出来2

我是Android和Retrofit的新手,我面临着一个问题。 我想让我的所谓的“ServerCommunication”类(singelton),所有的Retrofit魔术都完成了,它将有REST调用完成的公共方法。 我想在我的活动中使用这个“ServerCommunication”实例来调用Rest服务,但多数民众赞成它。 应用程序逻辑应该在活动中完成。 所以这样一些活动Login在ServerCommunication中调用方法Login(POJORequest),通过Retrofit框架实现REST调用并返回一些POJOResponse。所以Activity不关心REST通信,而ServerCommunication不关心什么逻辑应该应用于REST服务的响应。 随着改造2我不明白如何我可以阻止活动等待改造的反应,以及如何返回。 那么,我可能会认为我可以在活动中使用一些callback方法,所以这些方法可以在OnPostExecute()中的ServerCommunication中调用,以基于响应中的数据来应用一些逻辑,这只是我认为它应该是更简单的方法。 那么,为了澄清上面所有这些混乱想象简单的情况:你有主要活动的数据,你传递这个数据到你的通信类REST调用完成和响应收到。 此响应必须经过validation才能继续。 而且你希望这个validation在主要活动中完成,而不是在通信类中完成。 用Retrofit2在Android中做什么模式? 先谢谢你

不支持的Androidrest客户端的媒体types

我尝试从android模拟器发送一个请求到一个宁静的服务器。 但我总是得到错误: 415不支持的媒体types。 客户端代码: public JSONtest() throws Exception, IOException{ HttpPost request = new HttpPost(AppServerIP); JSONObject param = new JSONObject(); param.put("name", "weiping"); param.put("password", "123456"); StringEntity se = new StringEntity(param.toString()); request.setEntity(se); HttpResponse httpResponse = new DefaultHttpClient().execute(request); String retSrc = EntityUtils.toString(httpResponse.getEntity()); System.out.println(httpResponse.getStatusLine().getReasonPhrase()); } 服务器的代码: public class resource { @POST @Path("/trigger") @Consumes(MediaType.APPLICATION_JSON) public Response trigger(JSONObject notify) throws Exception{ return […]

Android与Gradle(Java完成非零退出值2)

这是我的.gradle文件: apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.test.test" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/license.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/notice.txt' exclude 'META-INF/NOTICE' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' […]

如何执行没有返回types或callback的DELETE请求?

我需要使用Retrofit执行DELETE请求。 所以,我的界面的代码片段如下所示: @DELETE("/api/item/{id}") void deleteItem(@Path("id") int itemId); 但是我得到的错误: java.lang.IllegalArgumentException:ApiItem.deleteItem:必须具有返回types或callback作为最后一个参数。 但是,根据Rest API的规则,我不应该收到任何对DELETE请求的响应。 我应该如何在界面中指定它? 谢谢。

Android Volley PUT请求

一般来说,我是Volley和Android的新手。 下面是我试图执行的代码片段(Android使用Volley),但它是服务器返回400.使用另一个REST客户端完美地工作。 这是使用PUT方法对服务器的请求。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); sendRequest(); } private void sendRequest() { RequestQueue queue = Volley.newRequestQueue(this); final JSONObject jsonObject = new JSONObject(); try { jsonObject.put("password", "ttttt"); jsonObject.put("username", "tester3"); jsonObject.put("token", "blah"); } catch (JSONException e) { // handle exception } JsonObjectRequest putRequest = new JsonObjectRequest(Request.Method.PUT, url, jsonObject, new Response.Listener<JSONObject>() { @Override […]

Spring MVC,Thymeleaf和REST

我目前有一个项目使用Spring控制器和Thymeleaf来创build一个小的浏览器应用程序。 控制器类声明为 @Controller public class MyController { 在控制器内部我有一个GET定义为 @RequestMapping(value = "/foobars", method = RequestMethod.GET) String index(Model model, — more params —) { //call repository and get foobarsList //model.addAttribute("foobars", foobarsList); … return "foobars/foobarThymeleafTemplate" } 调用库和获取foobarList是一个调用MongoRepository定义为: public interface FoobarRepository extends MongoRepository< … cut for brevity> { @RestResource(rel = "by-id") Marker findMarkerById(String id); … additional @RestResources cut for […]

将REST服务与Android应用程序同步

有一个REST服务,我用来填充我的数据库中的信息,这是由我的应用程序以后使用。 我已经阅读了关于此问题的几个主题,现在必须决定如何让REST服务和我的数据库之间的同步工作。 想想一个应用程序,从谷歌的财务API获取有关股票的信息,并将其存储在数据库中,显示应用程序启动时的信息,并在股票价格发生特定事件时发送通知。 我已经实现了当用户手动请求同步时启动的AsyncTask的简单选项。 现在我必须实现自动同步,这些是我find的选项: 创build将执行同步的服务 使用同步适配器/同步提供程序 所以我发现第二个选项有很多优点,特别是在这个video中解释的那些,但也有两个主要的缺点: 我无法find有关android同步的好文档( 这些第三方文章,但没有官方的Google或Android开发者指南) 根据这篇文章搞乱同步适配器可能会导致重大问题,如操作系统崩溃和重启。 我发现的大多数信息都很老旧,所以可能事情已经改变了,但是我的应用程序应该能够使用API​​级别8以上,所以我会非常感谢任何build议和链接到有价值的文档。

从Android设备对Spring Security Rest API进行身份validation

我有一个REST-API的SPRING后端。 它由用户名和密码保护。 当我打开它与我的电脑浏览器,首先login屏幕显示,我添加凭据后,我可以访问api fluendly。 当我通过一个Android应用程序尝试相同的时候,我得到每一次提到login屏幕。 要在Android端进行authentication,我使用默认可访问的REST API请求。 内部Android应用程序浏览器不兼容存储会话Cookie? 每次都会创build一个新的HTTP会话。 即时通讯使用Volley的请求 弹簧security.xml文件 <http auto-config="true" use-expressions="true"> <intercept-url pattern="/api/user/login" access="permitAll" /> <!–IS_AUTHENTICATED_ANONYMOUSLY–> <intercept-url pattern="/admin/**" access="hasAnyRole('ROLE_ADMIN','ROLE_GROUP_LEADER')" /> <intercept-url pattern="/api/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_GROUP_LEADER')" /> <form-login login-page="/login" default-target-url="/admin" authentication-failure-url="/login?error" username-parameter="username" password-parameter="password" /> <access-denied-handler error-page="/403" /> <logout logout-success-url="/login?logout" /> </http> <authentication-manager alias="authManager"> <authentication-provider > <password-encoder ref="encoder" /> <jdbc-user-service data-source-ref="dataSource" users-by-username-query= "select username,password, enabled from […]

如果parsing云数据服务失败,会发生什么情况?

我正在考虑为我的iOS / Android移动应用使用Parse云数据服务。 从文档中我可以看到,我的应用程序将高度耦合到Parse SDK,Parse SDK又使用Parse REST API (我假设)。 如果Parse已closures,或者我不再想使用Parse,可以采取什么措施将应用程序redirect到另一个服务? 理想情况下,我想告诉Parse SDK使用我自己的域名并将其redirect到Parse服务器(如何?)。 如果parsing失败,我可以将我的DNS更改到其他地方,并尝试复制parsingREST API(如何?)。 现在可能吗? 有没有更好的方法来准备这种情况?

如何在ION库中创build一个PUT请求

我正在使用Ion库,我应该说这真棒。 但我找不到创buildPUT,DELETE,GET请求的文档? 如果它可以处理这个REST请求,你能指导我吗?