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

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

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

[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()。 }

最新教程 更多>
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-05-03
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-05-03
  • 查找当前执行JavaScript的脚本元素方法
    查找当前执行JavaScript的脚本元素方法
    如何引用当前执行脚本的脚本元素在某些方案中理解问题在某些方案中,开发人员可能需要将其他脚本动态加载其他脚本。但是,如果Head Element尚未完全渲染,则使用document.getElementsbytagname('head')[0] .appendChild(v)的常规方...
    编程 发布于2025-05-03
  • 人脸检测失败原因及解决方案:Error -215
    人脸检测失败原因及解决方案:Error -215
    错误处理:解决“ error:( - 215)!empty()in Function openCv in Function MultSiscale中的“检测”中的错误:在功能检测中。”当Face Cascade分类器(即面部检测至关重要的组件)未正确加载时,通常会出现此错误。要解决此问题,必须...
    编程 发布于2025-05-03
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-05-03
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的if (str != null && !str.isEmpty())Option 2: str.length() == 0For Java versions prior to 1.6, str.length() == 0 can be二手: if(str!= n...
    编程 发布于2025-05-03
  • Python高效去除文本中HTML标签方法
    Python高效去除文本中HTML标签方法
    在Python中剥离HTML标签,以获取原始的文本表示 仅通过Python的MlStripper 来简化剥离过程,Python Standard库提供了一个专门的功能,MLSTREPERE,MLSTREPERIPLE,MLSTREPERE,MLSTREPERIPE,MLSTREPERCE,MLST...
    编程 发布于2025-05-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-05-03
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-05-03
  • 同实例无需转储复制MySQL数据库方法
    同实例无需转储复制MySQL数据库方法
    在同一实例上复制一个MySQL数据库而无需转储在同一mySQL实例上复制数据库,而无需创建InterMediate sqql script。以下方法为传统的转储和IMPORT过程提供了更简单的替代方法。 直接管道数据 MySQL手动概述了一种允许将mysqldump直接输出到MySQL clie...
    编程 发布于2025-05-03
  • 在Go语言中如何简洁定义10的幂常量
    在Go语言中如何简洁定义10的幂常量
    在GO 利用浮点线文字一种简洁的方式是使用浮点文字,该方法是使用floingpoint protals。写作1E3比写作1000更有效。这是一个示例(67个没有空间的字符):的文字用于未构图的整数常数,我们可以将1000用于KB,并用KB将随后的常量乘以KB,如下所示(77个没有空格的字符):,作...
    编程 发布于2025-05-03
  • 如何处理PHP文件系统功能中的UTF-8文件名?
    如何处理PHP文件系统功能中的UTF-8文件名?
    在PHP的Filesystem functions中处理UTF-8 FileNames 在使用PHP的MKDIR函数中含有UTF-8字符的文件很多flusf-8字符时,您可能会在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    编程 发布于2025-05-03
  • Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    在ASP.NET async void void async void void void void void void void的设计无需返回asynchroncon而无需返回任务对象。他们在执行过程中增加未偿还操作的计数,并在完成后减少。在某些情况下,这种行为可能是有益的,例如未期望或明确...
    编程 发布于2025-05-03
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-05-03
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-05-03

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

Copyright© 2022 湘ICP备2022001581号-3