”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在Android中与Androl的凌空请求后工作?

如何在Android中与Androl的凌空请求后工作?

发布于2025-02-06
浏览:156

[2一个常见的任务。虽然较新的API版本中不再可用httpentity,但仍有一些方法可以使用凌空请求。

创建一个基本的倍增请求How to Make Working POST Multipart Requests with Volley in Android?
mmultipartbody; //构造函数 public Multipartrequest(字符串URL,MAP 标题,字符串MimeType,byte [] Multipartbody, wendys.listener 侦听器,响应。erlistenererrorListener){ super(method.post,url,errorListener); this.mlistener =侦听器; this.merrorlistener = errorListener; this.mheaders =标题; this.mmimetype = mimeType; this.mmultipartbody = multipartbody; } //获取器和固定器 //覆盖Getheaders()如果您需要添加自定义标题 @Override 公共地图 getheaders()抛出authfailureError { 返回(mheaders!= null)? mheaders:super.getheaders(); } // Override getBodyContentType()为Multipart请求设置正确的MIME类型 @Override public String getBodyContentType(){ 返回mmimetype; } //覆盖getbody()返回多部分主体 @Override public byte [] getbody()抛出authfailureError { 返回mmultipartbody; } //覆盖parsenetworkresponse()以将响应作为网络响应解析 @Override 受保护的响应 ParsenetworkResponse(NetworkResponse响应){ 尝试 { 返回响应。 回复, httpheaderparser.parsecacheheaders(响应)); } catch(异常E){ 返回响应。ERROR(新的Parseerror(e)); } } //提供响应和错误 @Override 受保护的void deliverResponse(网络响应响应){ mlistener.onresponse(响应); } @Override 公共void deliverror(射线错误错误){ merrlistener.onerrorresponse(error); } }

构建Multipart Body

; ByTearRayOutputStream bos = new ByTearRayOutputStream(); dataOutputStream dos = new DataOutputStream(BOS); 尝试 { //文本数据 BuildTextPart(dos,“ name”,“ John Doe”); buildTextPart(dos,“电子邮件”,“ [email protected]”); //图像数据 bitmap imagebitmap = bitmapfactory.decoderesource(context.getResources(),r.drawable.my_image); buildImagePart(dos,“ image”,imageBitMap); } catch(ioexception e){ e.printstacktrace(); } multipartbody = bos.tobytearray(); 在request

将文本数据添加到请求

导入com.android.volley.networkresponse; 导入com.android.volley.parseerror; 导入com.android.volley.request; 导入com.android.volley.response; 导入com.android.volley.volleyerror; 导入com.android.volley.toolbox.httpheaderparser; 导入java.io.bytearrayoutputstream; 导入java.io.io.dataoutputstream; 导入java.io.ioexception; 导入java.util.hashmap; 导入java.util.map; 公共类Volleymultipartrequest扩展了请求 { 私人最终响应。listener mlistener; 私人最终响应。 私有最终地图 mheaders; 私有最终字符串mmimetype; 私人最终字节[] mmultipartbody; public oulymultipartrequest(int方法,字符串url,wendesp.listener 侦听器, wendmes.Erlistener errorListener){ super(方法,URL,errorListener); this.mlistener =侦听器; this.merrorlistener = errorListener; this.mheaders = null; this.mmimetype = null; this.mmultipartbody = null; } public vulleymultipartrequest(字符串URL,MAP 标题,字符串Mimetype,byte [] Multipartbody, wendys.listener 侦听器,响应。erlistenererrorListener){ super(method.post,url,errorListener); this.mlistener =侦听器; this.merrorlistener = errorListener; this.mheaders =标题; this.mmimetype = mimeType; this.mmultipartbody = multipartbody; } @Override 公共地图 getheaders()抛出authfailureError { 返回(mheaders!= null)? mheaders:super.getheaders(); } @Override public String getBodyContentType(){ 返回mmimetype; } @Override public byte [] getbody()抛出authfailureError { 返回mmultipartbody; } @Override 受保护的响应 ParsenetworkResponse(NetworkResponse响应){ 尝试 { 返回响应。 回复, httpheaderparser.parsecacheheaders(响应)); } catch(异常E){ 返回响应。ERROR(新的Parseerror(e)); } } @Override 受保护的void deliverResponse(网络响应响应){ mlistener.onresponse(响应); } @Override 公共void deliverror(射线错误错误){ merrlistener.onerrorresponse(error); } 公共静态映射 createMultipartrequestParts(Map params,Map Data){ MAP MultipartParams = new Hashmap (); for(map.entry entry:params.entryset()){ MultiPartParams.put(entry.getKey(),new DataPart(entry.getValue())); } for(map.entry entry:data.entryset()){ MultipartParams.put(entry.getKey(),entry.getValue()); } 返回多派克拉姆; } public static byte [] createMultipartBody(映射 data,string boundare)抛出ioexception { ByTearRayOutputStream bos = new ByTearRayOutputStream(); dataOutputStream dos = new DataOutputStream(BOS); for(map.entry entry:data.entryset()){ buildTextPart(dos,entry.getKey(),entry.getValue()。getContentType(),entry.getValue()。getFilename(),entry.getValue()。getData()。 }

最新教程 更多>
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-04-03
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-04-03
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能在使用内容属性引用时未能显示图像的情况。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-04-03
  • 哪种在JavaScript中声明多个变量的方法更可维护?
    哪种在JavaScript中声明多个变量的方法更可维护?
    在JavaScript中声明多个变量:探索两个方法在JavaScript中,开发人员经常遇到需要声明多个变量的需要。对此的两种常见方法是:在单独的行上声明每个变量: 当涉及性能时,这两种方法本质上都是等效的。但是,可维护性可能会有所不同。 第一个方法被认为更易于维护。每个声明都是其自己的语句,使其...
    编程 发布于2025-04-03
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-04-03
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-04-03
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-04-03
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-04-03
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-04-03
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-04-03
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-04-03
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. [&​​&&&&&&&&&&&&&&&默元组方法在...
    编程 发布于2025-04-03
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-04-03
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-04-03
  • Python读取CSV文件UnicodeDecodeError终极解决方法
    Python读取CSV文件UnicodeDecodeError终极解决方法
    在试图使用已内置的CSV模块读取Python中时,CSV文件中的Unicode Decode Decode Decode Decode decode Error读取,您可能会遇到错误的错误:无法解码字节 在位置2-3中:截断\ uxxxxxxxx逃脱当CSV文件包含特殊字符或Unicode的路径逃...
    编程 发布于2025-04-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3