使用Raturofit 2.0.1,在Android App中定义的API接口中有一个呼叫函数: @Multipart @POST("api.php") Call doAPI( @Part("lang") String lang, @Part("file\"; filename=\"image.jpg") RequestBody file ); 我以这样的方式发送请求: 呼叫呼叫= service.doapi(" eng",imagefile); 其中imageFile是用File对象创建的RequestBody.上传图像零件没有问题,而@Part("lang") String lang零件在服务器中获得了额外的引号. 在PHP一侧,写如下: $lang = trim($_POST['lang']); 返回"eng".为什么包围着额外的双引号? 当然我可以剥离尾声和引用双引号,但是这样做很奇怪 相关问题
以下是关于 retrofit2 的编程技术问答
我希望以单一方法处理所有响应.目的是在响应代码不是3时回忆服务,当响应代码为3时,我打算首先刷新令牌,然后召回相同的服务. 我已经创建了一个BaseCallback类来捕获一种方法,但我看不到日志,无法捕获断点. basecallback.class public class BaseCallBack implements Callback { @Override public void onResponse(Call call, Response response) { if (!response.isSuccessful()){ Log.d("BaseCallback","Response Fail"); } } @Override public void onFailure(Call call, Throwable t) { t.toString(); } } 呼叫
我正在使用以下依赖项(Raturofit和Okhttp). implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' 以下是我的代码: OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(cache_interceptor)
我的API基础URL是: 在邮递员的标题中,它可以正常工作. x-access-token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX25hbWUiOiJkZWFsQWRtaW4iLCJ1c2VyX3Bhc3N3b3JkIjoiY2U5MDZkNDkzMWY3NmFhZWFmZTViNjM0YTg3Y2RkYzQ4YjMzNmUzYmVlZDU1N2ZhZTI0YzMxZTY3YmQyN2NhZDg4NDJmNzJlNTJlNGUyODc5ZWVkODY1MDljYzY5ODJlNDYwMjU0Mzk4ODQzMTljMTQxMGMwOTcxNGU0Y2MxMDNiMDQwYjkwOTQ1OTMyMjYwMGI1MjgwMmRkOTc2YTE4OGE5MTZiMWU4ZmU1YmY1ZWZiNTlkYjc2NDhmMjQxOTg0ODdiMWE5OGVhMjg2ZWZjZDI1M2Y5ZWUxN
我知道如何处理改造响应,但是我使用RX Java处理REST API的分页有问题. 背景 我正在使用的REST API给了我以下响应,并在标题中的下一页链接中给出了以下响应: HTTP 200 OK Allow: GET, HEAD, OPTIONS Content-Type: application/json Link: ; rel="next" Vary: Accept X-Total-Count: 80 [ { "id": 3, "url": "", "picture": { "id": 6, "url": "", "name": "Chrysler" }, "location": { "type"
我正在与Spotify API合作,希望使用RXJAVA链接一些分页的结果. Spotify使用基于光标的分页,因此诸如诸如@lopar中的解决方案 响应来自{ "artists" : { "items" : [ { "id" : "6liAMWkVf5LH7YR9yfFy1Y", "name" : "Portishead", "type" : "artist" }], "next" : "https://api.spotify.com/v1/me/following?type=artist&after=6liAMWkVf5LH7YR9yfFy1Y&limit=50", "total" : 119, "cursors" : { "after" : "6liAMWkVf5LH7YR9yfFy1Y" }, "limit" : 50, "href" : "https://api.spotify.com/v1/me/following?type=artist&limit=50" } }
首先,对不起,英语不好. 我对公司的应用程序有一个小问题,几个月前我开始学习Kotlin,所以这对我来说是新鲜的,我在大多数问题上都做了一些挖掘,但是我在任何地方都找不到任何地方. 我们有一个带有Joomla API的服务器provind数据,问题是,当我使用reatofit2获取查询数据时,当找不到数据时,可以返回begin_object,而在找到数据时可以返回begin_array.我发现很多地方都在讲一个何时,但可以期待另一个地方,但是两个都没有. . 找不到数据时的响应: {"err_msg":"Produto n\u00e3o encontrado (CALOTA CORSA)","err_code":404,"response_id":"","api":"","version":"1.0","data":{}} 我称此件产品列表的数据类以及我称为产品的数据,以供将来参考... 这是发现数据时的响应: {"err_msg":"","err_code
我使用reatrofit2和gson进行启发的json.这是我在Android应用中的代码: public class RestClientFactory { private static GsonBuilder gsonBuilder = GsonUtil.gsonbuilder; private static Gson gson; private static OkHttpClient.Builder httpClient; private static HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor() .setLevel(HttpLoggingInterceptor.Level.BASIC); static { gsonBuilder.setDateFormat(DateUti
正在使用Retrofit2进行我的项目.当我的电话发生故障时,我再次重复相同的呼叫.此通话的重复使我的应用程序强迫关闭. 当我查看日志时,我会有错误日志,如下所示.我觉得这是由多个呼叫引起的.所以我在Enqueus之前做到了,我致电取消.但是它不起作用.接近同样的力量. FATAL EXCEPTION: main Process: com.SocialMob, PID: 27846 java.lang.OutOfMemoryError: pthread_create (stack size 16384 bytes) failed: Try again at java.lang.VMThread.create(Native Method) at java.lang.Thread.start(Thread.java:1029) at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:920
所以这是问题,我正在尝试为我的应用程序实现缓存,并遵循此教程 android:CACHE网络请求使用retrofit2和okhttp3 脱机访问.可悲的是,当没有互联网连接时,缓存的响应不会出现,而是 toast.maketext(getContext(),getContext(). 被执行.那么谁能告诉我我做错了什么?还是指导我解决这个问题?如果您问我,我会发布其他信息.以下是特定函数的整个代码. private void loadHomeLoggedPosts(String uid) { progressBar.setVisibility(View.VISIBLE); OkHttpClient client = new OkHttpClient .Builder() .cache(new Cache(getContext().getCacheDir(), 10 * 1024 * 1024)) // 10
我正在使用最后一个版本retrofit连接到Web服务,但是让我bellow错误: okhttp3.internal.http2.StreamResetException: stream was reset: PROTOCOL_ERROR 这个错误okhttp3.internal.http2.StreamResetException: stream was reset: CANCEL对于巨大的string?还是服务器的**nginx**? 我的代码就像波纹管: try { // Create a trust manager that does not validate certificate chains final TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { @Override
我正在使用网络模块,在该模块中应该提供离线数据,在此我从本地数据库中获取先前存储的JSON响应,并构建响应并返回应用程序.所有这些都在我的okhttp Interceptor上在应用程序级别发生.我知道我可以使用ConnectivityManager 检查N/W的可用性 每当我尝试使用N/W禁用或更改服务器false Server url进行测试时,调试器都会消失,呼叫chain.proceed(request) 请注意,我知道我会出现任何互联网错误的onFaluire restrofit的onFaluire.但是我不想要那个.相反,我希望在Interceptor内部处理并构建响应和返回. 在网上搜索找到了一个问题与此相似的问题. 让我知道是否需要任何清晰度. 解决方案 我知道这是非常古老的帖子,但是对于像我这样的人也遇到了这个问题. chain.proceed(request)呼叫将抛出异常,以便无法执行此下面的任何代码. 因此,如果您真的想执
我一直在研究 Sky Scanner API 以检索Android中的飞行票价和其他细节. 我正在使用 Retrofit2 进行网络调用.问题是在检索会话键 时遇到错误 错误 javax.net.ssl.SSLPeerUnverifiedException: Hostname partners.api.skyscanner.net not verified:certificate: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=DN:CN=api.skyscanner.net,OU=Infrastructure,O=Skyscanner Ltd,L=London,ST=London,C=GB apiclient public static Retrofit getRetrofit() { if (retrofit2 == null) { HttpLoggingIntercept
我正在尝试使用Retrofit 2.0进行API调用.在我的API电话中,我必须对此URL进行必要的电话 要在翻新中形成此URL,我一直在使用以下接口 @GET("Users?where=") Call> getFollowers(@Query("followings.objectId") String objectId); 此接口调用在查询参数之前放置一个andand,并生成如下 之类的URL 我试图通过路径注释来克服这一点,但我不断获得" url查询字符串必须替换块.对于使用@query的动态查询参数". 我试图连接的 API需要一个" where ="子句,以通过设计过滤.我无权改变.我想要的是某种程度上告诉Raterofit不要在查询参数或此问题的任何解决方法之前放置一个andand符号. 任何帮助都将不胜感激. 解决方案 对于那些寻求类似答案的人,我想到了以下解决方案 我声明了与@url 的接口 @GET
我有一个上游服务器,该服务器使用REST接受图像提交.提交的图像是JSON有效载荷的一部分,类似于此 { "name": "Blah.jpg", "uploader": "user1", "image": "" } 使用此策略适用于小图像,但在较大图像上产生了内存错误. 是否可以流式传输图像的base64组件?传递像迭代器之类的东西,该迭代器将用于读取图像的块,base64并将它们直接发送到网络? 解决方案 我在okhttp3.RequestBody的类中解决了以下内容: private void writeFile(File file, BufferedSink sink) throws IOException { byte buf[] = new byte[3000]; try (FileInputStream fin = new FileInputStream(file)) { wh
首先,让我们查看代码: public interface ApiInterface { @Multipart @POST("my/files/photo/") Call uploadPhoto(@Header("authorization") String auth, @Part MultipartBody.Part file, @Part("file-type") RequestBody fileType); } 我称此界面是这样的: RequestBody body = RequestBody.create(MediaType .parse(getContentResolver().getType(fileUri)), file); M
因此,我的目标是将api key嵌入我的Retrofit对象中,这样我就不需要手动将其作为查询参数每个请求函数 ,然后我做了在以下内容(从: a>): private val interceptor = Interceptor { chain -> val newRequest = chain.request().newBuilder().run { addHeader("api_key", Constants.API_KEY) build() } chain.proceed(newRequest) } private val okHttpClient = OkHttpClient.Builder().run { connectTimeout(15, TimeUnit.SECONDS) readTimeout(15, TimeUnit.SECONDS) addInterceptor(intercep
流量:我想在Raterofit进行API调用时检查Internet连接,如果没有Internet连接,那么我不想进一步进行,我的请求应取消.请非常清楚地指出,我看到了许多与此相关的帖子,但是当改造完成请求时,大多数帖子都在执行此操作,并且它正在进行操作,人们正在处理互联网连接检查.我不要那个.我想在我的所有API呼叫都将首先检查Internet连接的地方进行所有API呼叫的架构,然后才会继续进行,否则它将返回,并且应该简单地进行. 让我解释我的代码问题: 这是我通过HILT提供的OKHTTP功能: ...... okHttpClientBuilder.addNetworkInterceptor(NetworkInterceptor()) okHttpClientBuilder.addInterceptor(logger) okHttpClientBuilder.authenticator(refreshTokenA
服务器接受所有参数,除了带有多部分表单申请数据 的布尔值外, 所以我有这样的请求: @Multipart @POST("auth/...") suspend fun sendExampleRequest( @Part("enabled") enabled: Boolean, @Part("name") name: String, @Part photo: MultipartBody.Part ) 来自: override suspend fun sendExampleRequest( enabled: Boolean, name: String, photo : Uri ) { try { withContext(ioDispatcher) { authApi.sendExampleRequest( enabled = enabled,
我的Android应用程序使用Restrofit 2.2.0与Okhttp3 3.7.0使用Restrofit 2.2.0与我们的后端进行通信.它运行良好.现在,我需要使用另一家公司制作的外部库(不是公共图书馆).该库提供了AAR,其中包括Okhttp 3.3.1.我正在使用Gradle来构建项目. ,一旦我将库添加到我的项目中,一切都停止工作,并且该应用程序在启动时崩溃.错误是: java.lang.NoSuchMethodError: No static method parse(Ljava/lang/String;)Lokhttp3/HttpUrl; in class Lokhttp3/HttpUrl; or its super classes (declaration of 'okhttp3.HttpUrl' appears in /data/app/mycompany.myapp- 1/split_lib_dependencies_apk.apk:classes