Articles of rest

如何禁用Volley请求重试?

我将JsonRequest发布到服务器。 服务器很慢。 Volley倾向于对慢速服务器进行多次调用,因为它没有得到第一个请求的响应(因为我的服务器很慢)。 有没有办法禁止Volley重试请求,以便它可以收到第一个响应? 我努力了: myRequest.setRetryPolicy(new DefaultRetryPolicy( TIMEOUT_MS, RETRIES, BACKOFF_MULT)); 我已经替换了TIMEOUT_MS = 0,RETRIES = 0,甚至BACKOFF_MULT = 0,但它不起作用。 还有其他建议吗?

如何使用Retrofit为所有请求定义标头?

我正在寻找一种解决方案来定义在所有请求中使用的唯一标头。 今天我使用@Header对每个请求传递像参数一样但我想只定义在所有请求中工作的头,而不需要像参数一样传递,例如在我的请求@POST和@POST上修复此Header 今天我用这个。 请注意,每个请求@GET我都需要将Header定义为参数。 //interface @GET(“/json.php”) void getUsuarioLogin( @Header(“Authorization”) String token, @QueryMap Map params, Callback response ); //interface @GET(“/json.php”) void addUsuario( @Header(“Authorization”) String token, @QueryMap Map params, Callback response ); //using public void getUsuarioLogin(){ Map params = new HashMap(); params.put(“email”, “me@mydomain.com”); params.put(“senha”, ConvertStringToMD5.getMD5(“mypassword”)); RestAdapter adapter = new RestAdapter.Builder() .setLogLevel(RestAdapter.LogLevel.FULL) .setEndpoint(WebServiceURL.getBaseWebServiceURL()) .build(); UsuarioListener listener = adapter.create(UsuarioListener.class); […]

错误java.lang.RuntimeException:Stub! 在Android中使用Fitnesse测试

我正在尝试使用Fitnesse框架创建一个测试夹具,我想测试一个从服务器检索数据的函数(RESTFUL服务)。 我的测试用例非常简单: public class FriendListActivityFixture extends ColumnFixture { public int URL; public String test() { JSONArray array = JsonHelper.getJsonArrayFromUrl(“http://107.22.209.62/android/get_users.php”); return array.toString(); } } public static JSONArray getJsonArrayFromUrl(String url) { InputStream input = null; String result = “”; JSONArray jsonArray = null; try { HttpClient httpclient = CustomHttpClient.getHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse response = […]

执行同步PUT请求时在Retrofit中的EOFException

在我的应用程序中,我使用Retrofit库进行同步 PUT请求。 问题是:有时库会抛出EOFException 。 以下是其中一种情况的堆栈跟踪 29099-29269/com.mycompany.myapp D/Retrofit﹕ java.io.EOFException at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:192) at com.squareup.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:189) at com.squareup.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:101) at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:676) at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:426) at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:371) at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:466) at retrofit.client.UrlConnectionClient.readResponse(UrlConnectionClient.java:73) at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:38) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321) at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240) at $Proxy7.addEvents(Native Method) at com.mycompany.myapp.api.MyService.addEvents(MyService.java:59) 我尝试了以下展示的解决方案,但在我的案例中没有一个有用: Retrofit仅在第一次提供EOFException bug retrofit.RetrofitError:适用于Android的java.io.EOFException 1.4.0 String中的新行导致retrofit.RetrofitError:java.io.EOFException 以下是我在应用中创建RestAdapter : OkHttpClient okHttpClient = new OkHttpClient(); RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(Url) .setRequestInterceptor(new […]

如何使用带有字符串主体的齐射发送POST请求?

我正在开发一个Android应用程序,它与我写的RESTful Web服务进行通信。 使用Volley进行GET方法非常简单,但是我不能把手指放在POST方法上。 我想在请求正文中发送带有String的POST请求,并检索Web服务的原始响应(如200 ok , 500 server error )。 所有我能find的是StringRequest ,它不允许发送数据(正文),并且它还限制我接收解析的String响应。 我还遇到了JsonObjectRequest ,它接受数据(正文)但检索解析的JSONObject响应。 我决定编写自己的实现,但我找不到从Web服务接收原始响应的方法。 我该怎么做?

什么是存根/虚拟宁静的Web服务的简单方法?

我想创建一个Android应用程序,这个应用程序将对Web服务进行RESTful调用以获取一些数据。 我知道RESTful接口会是什么,但我不想要创建自己的实现的麻烦。 有没有一种简单的方法来创建一个存根RESTful Web服务,它将返回一些静态数据而无需编写完整的WS应用程序来执行此操作?

保护可从Android访问的REST API

我们正在构建一款Android游戏,需要访问Web服务 – 因此我们在PHP中编写了一个RESTful API,它在我们自己的服务器上运行。 API提供的是: 创建用户,登录,下载游戏,检索游戏列表,提交分数等等。现在我想,如果一些有经验的用户获得API的URL格式 – 他/他将能够以多种方式废弃系统: 创建一个脚本并运行它来创建自动用户 – 我想我可以通过CAPTCHA或类似的东西来阻止它。 但同样,validation码会惹恼游戏玩家。 恶意用户使用他的浏览器登录,下载游戏然后按照自己的意愿提交分数 – 所有这一切都可以通过简单地从浏览器中输入来调用API。 我假设恶意用户以某种方式知道要调用的API URL – 通过在应用程序发出HTTP请求时嗅探。 我需要确保仅从安装游戏的Android设备发出请求。 (游戏将免费) 现在我该如何防止这种滥用?

如何在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' […]