草庐IT

android - okhttp 多部分登录拦截器

coder 2023-11-21 原文

我正在尝试使用 okHTTP 多部分将图像上传到服务器。服务器不接受我的请求。我的问题是我在日志拦截器中看不到我的 multi 部分,所以我无法调试。这是我使用的代码以及生成的日志猫和所需的有效负载。任何帮助表示赞赏。

            RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("uploaded_file", filename, RequestBody.create(MEDIA_TYPE_PNG, sourceFile))
                .addFormDataPart("flowChunkNumber", "1")
                .addFormDataPart("flowCurrentChunkSize", String.valueOf(sourceFile.getTotalSpace()))
                .addFormDataPart("flowChunkSize", "1048576")
                .addFormDataPart("flowIdentifier", "4731-images1jpeg")
                .addFormDataPart("flowFilename", "images (1).jpeg")
                .addFormDataPart("flowFilename", "images (1).jpeg")
                .addFormDataPart("flowRelativePath", "images (1).jpeg")
                .addFormDataPart("flowTotalChunks", "1")
                .build();

        Request request = new Request.Builder()
                .addHeader("cookie", ******* )
                .url(URL_UPLOAD_IMAGE)
                .post(requestBody)
                .build();

        HttpLoggingInterceptor logInterceptor = new HttpLoggingInterceptor();
        logInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient client = new OkHttpClient
                .Builder()
                .addNetworkInterceptor(logInterceptor)
                .build();


        Response response = client.newCall(request).execute();

这是我在使用拦截器时在日志 cat 中看到的内容

D/OkHttp: --> POST https://www.appido.ir/api/profile/avatar http/1.1

D/OkHttp: Content-Type: multipart/form-data; boundary=a8028055-3a30-4942-916b-af56935e8b32

D/OkHttp: Content-Length: 14097 D/OkHttp: cookie: ************************
Domain=.appido.ir; expires=Tue, 23-Aug-2016 13:31:11 GMT; Path=/

D/OkHttp: Host: www.appido.ir

D/OkHttp: Connection: Keep-Alive

D/OkHttp: Accept-Encoding: gzip

D/OkHttp: User-Agent: okhttp/3.4.1

D/OkHttp: h������gTRC��������� lumi���� 07-25 07:47:49.163 7776-8509/com.androidbuts.uploadimage D/OkHttp: |������meas���� 07-25 07:47:49.163 7776-8509/com.androidbuts.uploadimage D/OkHttp: �������$bkpt���� 07-25 07:47:49.163 7776-8509/com.androidbuts.uploadimage D/OkHttp: �������rXYZ����

and this gibberish goes on for many lines

D/OkHttp: --> END POST (14097-byte body)

如何才能看到有意义的日志猫?我想实现这个:

------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowChunkNumber"

1 ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowChunkSize"

1048576 ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowCurrentChunkSize"

23016 ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowTotalSize"

23016 ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowIdentifier"

23016-60x60music2_smalljpg ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowFilename"

60x60music2_small.jpg ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowRelativePath"

60x60music2_small.jpg ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="flowTotalChunks"

1 ------WebKitFormBoundaryJDdhM3Si8enJZABA Content-Disposition: form-data; name="file"; filename="blob" Content-Type: application/octet-stream

------WebKitFormBoundaryJDdhM3Si8enJZABA--

最佳答案

从 Okttp 和 Retrofit 查看分段上传内容的方法是使用 Facebook 的 Stetho,并将 StethoInterceptor 添加到 Okhttp 记录器

https://github.com/facebook/stetho

它将 Android 应用程序的网络请求放入开发机器的 chrome 检查器中。

关于android - okhttp 多部分登录拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38563394/

有关android - okhttp 多部分登录拦截器的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. ruby-on-rails - 如何找出拦截 'method_missing' 的内容 - 2

    使用Ruby1.8.6/Rails2.3.2我注意到在我的任何ActiveRecord模型类上调用的任何方法都返回nil而不是NoMethodError。除了烦人之外,这还破坏了动态查找器(find_by_name、find_by_id等),因为即使存在记录,它们也总是返回nil。不从ActiveRecord::Base派生的标准类不受影响。有没有办法追踪在ActiveRecord::Base之前拦截method_missing的是什么?更新:切换到1.8.7后,我发现(感谢@MichaelKohl)will_paginate插件首先处理method_missing。但是will_pa

  3. ruby - 使用 Ruby 和 Mechanize 登录网站 - 2

    我需要从站点抓取数据,但它需要我先登录。我一直在使用hpricot成功地抓取其他网站,但我是使用mechanize的新手,我真的对如何使用它感到困惑。我看到这个例子经常被引用:require'rubygems'require'mechanize'a=Mechanize.newa.get('http://rubyforge.org/')do|page|#Clicktheloginlinklogin_page=a.click(page.link_with(:text=>/LogIn/))#Submittheloginformmy_page=login_page.form_with(:act

  4. ruby - 如何使用部分字符串搜索数组并返回索引? - 2

    我想使用部分字符串搜索数组,然后获取找到该字符串的索引。例如:a=["Thisisline1","Wehaveline2here","andfinallyline3","potato"]a.index("potato")#thisreturns3a.index("Wehave")#thisreturnsnil使用a.grep将返回完整的字符串,使用a.any?将返回正确的true/false语句,但都不会返回匹配的索引找到了,或者至少我不知道该怎么做。我正在编写一段代码,该代码读取文件、查找特定header,然后返回该header的索引,以便它可以将其用作future搜索的偏移量。如果

  5. ruby-on-rails - 如何将数据传递给部分? - 2

    K伙计们,所以我创建了这个赞成/反对的投票脚本(基本上就像stackoverflow上的那个),我试图向其中添加一些Ajax,这样页面就不会在您每次投票时都重新加载。我有两个Controller,一个叫grinder,一个叫votes。(磨床基本都是帖子)所以这是所有研磨机的索引(看起来像这样)这是该页面的代码。Listinggrinders"grinders/grinders")%>这就是我在views/grinders/_grinders.erb中的内容true)do|u|%>grinder.id%>"up"%>'create')%>true)do|d|%>grinder.id%>

  6. ruby-on-rails - 使用用户或管理员模型和 Basecamp 样式子域设计登录 - 2

    我为Devise用户和管理员提供了不同的模型。我也在使用Basecamp风格的子域。除了我需要能够以用户或管理员身份进行身份验证的一些Controller和操作外,一切都运行良好。目前我有authenticate_user!在我的application_controller.rb中设置,对于那些只有管理员才能访问的Controller和操作,我使用skip_before_filter跳过它。不幸的是,我不能简单地指定每个Controller的身份验证要求,因为我仍然需要一些Controller和操作才能被用户或管理员访问。我尝试了一些方法都无济于事。看来,如果我移动authentica

  7. ruby - 如何使用 omniauth/oauth 对每秒登录数进行基准测试? ( ruby +rspec) - 2

    我想用一个(自己的)omniauth提供商来衡量每秒可以登录多少次。我需要了解此omniauth/oauth请求的性能如何,以及此身份验证是否具有可扩展性?到目前为止我得到了什么:defperformance_auth(user_count=10)bm=Benchmark.realtimedouser_count.timesdo|n|forkdoclick_on'Logout'omniauth_config_mock(:provider=>"foo",:uid=>n,:email=>"foo#{n}@example.net")visit"/account/auth/foo/"enden

  8. ruby-on-rails - 将 restclient 与多部分帖子一起使用 - 2

    我将restclient用于多部分表单,以将数据发送到restfulweb服务(它是Panda视频编码服务)。不过,诀窍在于我传递给restclient(Technoweenie分支)的文件来自用户提交的我自己的表单。那么,让我们来看看这个。用户将文件发布到我的Rails应用程序。在我的Controller中,它从params[:file]接收文件。然后我想使用RestClient将params[:file]传递给Panda。我在Panda服务器上遇到的错误如下。我注意到堆栈跟踪中的文件参数也在一个字符串中(我假设Panda将其转换为字符串以获得更好的堆栈跟踪)。~Startedreq

  9. ruby-on-rails - 独立测试 Rails 部分 View - 2

    我在标准rails2.1项目中使用Test/Unit。我希望能够独立于任何特定的Controller/操作来测试分部View。好像ZenTest'sTest::Rails::ViewTestCase会有所帮助,但我无法让它工作,与view_testhttp://www.continuousthinking.com/tags/view_test类似Google出现的大部分内容似乎都已经过时了,所以我猜它并不真正适用于Rails2.1非常感谢任何帮助。谢谢,罗兰 最佳答案 我们正在使用RSpec在我们的Rails2.1项目中,我们可以做

  10. ruby - 如何使用 Ruby 和 eventmachine 登录? - 2

    我正在使用Ruby和Eventmachine库编写一个应用程序。我真的很喜欢非阻塞I/O和事件驱动系统的想法,我遇到的问题是日志记录。我正在使用Ruby的标准记录器库。并不是说日志记录需要永远,但它似乎不应该阻塞,但它确实阻塞了。是否有某个库将Ruby的标准记录器实现扩展为非阻塞的,或者我应该只调用EM::defer进行日志记录调用?有没有办法让eventmachine已经为我做这件事? 最佳答案 我最终将记录器包装在一个启动线程并具有FIFO队列的单例类中。日志记录会将日志信息转储到队列中,线程只是循环,从队列中拉出内容并使用真正

随机推荐