我正在使用AFNetworking2
将参数和图像发送到服务器。
manager.POST(urlPath, parameters: parameters, constructingBodyWithBlock: { (formData: AFMultipartFormData!) -> Void in
formData.appendPartWithFileData(imageData!, name: "image", fileName: "dummy.jpg", mimeType: "image/jpeg")
}, success: { (dataTask: NSURLSessionDataTask!, responseObject: AnyObject!) -> Void in
println("success: \(responseObject.description)")
}, failure: { (dataTask: NSURLSessionDataTask!, error: NSError!) -> Void in
println("failure: \(error)")
})
在服务器端,数据将是一个字典,由参数(QueryDict)和图像数据(MultiValueDict)合并而成:
data=MergeDict(<QueryDict: {u'owner': [u'6'], u'description': [u'this
is p1'], u'name': [u'p1']}>, <MultiValueDict: {u'image':
[<InMemoryUploadedFile: file.jpg (image/jpeg)>]}>)
我认为'MultiValueDict'是来自这部分代码:formData.appendPartSusFileData(ImageData!, name:"image", fileName:"dummy.jpg", mimeType:"image/jpeg")
然而,我希望有这样的多值dict:{code>{u'groupImages':[{u'image':[
数据格式是具有数组值的字典,数组具有另一个字典值。
那么我该怎么做才能使formData。appendPartWithFileData是否成为上述数据格式?
编辑:
我看到过一些与我的问题类似的帖子。例如,这个:嵌套json中的AFNetworking post映像
我尝试过这样更改代码:
formData.appendPartWithFileData(imageData!, name: "groupImages[0].image", fileName: "dummy.jpg", mimeType: "image/jpeg")
或
formData.appendPartWithFileData(imageData!, name: "groupImages[0][image]", fileName: "dummy.jpg", mimeType: "image/jpeg")
但是没有一个对我有用。
我的服务器希望收到如下JSON:
{
"name": "p2",
"owner": 6,
"description": "this is p2",
"groupImages": [{
"image": <InMemoryUploadedFile: dummy.jpg (image/jpeg)>
}]
}
有什么想法吗?
当您发送一个多部分HTTP请求时,JSON数据和图像数据是分开的——实际上是分为多个部分。也许有必要看看这个关于“什么是HTTP多部分请求”的答案,这样您就可以看到数据是如何传输的。
其长短不一之处在于JSON和图像被合并到服务器端的字典中。图像不会嵌入在JSON中传输。它们如何合并的语义(例如,如何使用像groupImages[0][image]这样的名称与JSON字典合并)由服务器决定,而不是由iOS应用程序决定。
因此,您的服务器团队应该能够指定如何命名此文件,以便它与字典正确合并。他们应该能够生成一个正常工作的示例HTTP请求(例如,使用curl或Postman)。如果您的服务器有一个web应用程序,您可以检查web应用程序中的类似功能,以查看那里的请求是什么样子的。一旦您有了一个工作请求,就可以通过将传出的NSURLRequest与它们提供的示例请求进行比较来模拟它。
我们有一个场景,(UDP客户端程序)向(UP服务器)发送UDP数据包 TCP在数据通信开始之前和结束之后执行握手。UDP没有。 那么,运行在上的应用程序失败的原因是否是上的服务器程序没有准备好(关闭)接收UDP数据包?
我正在尝试从Android向我的php服务器提交数据。然而,所有的答案似乎都使用了不推荐使用的ApacheHTTP库。我不想用它,当我试着用的时候,它不起作用。 现在它似乎什么也没做。它似乎连接到web服务器,但服务器不写入任何数据。如果我只是用浏览器访问url,它会写入一个文件。 php代码是 然后在Android studio中,我会在按下按钮后放入所有代码
XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理
当我使用ant任务运行时(ant-Dtest=test-DThreads_CE=10-DRampUp_CE=10-DLoop_CE=1): 只有1个线程启动,我收到包含的请求的错误: > "非HTTP响应代码:java.net.SocketException-非HTTP响应消息:网络不可达:连接" 在调试时,我观察到我的build.xml没有参数到达从机。所以每个参数默认为“1” 但是,当相同的脚
接口: 以下是我的web.config: 和我的app.config:
我一直在开发一个java程序,基本上类似于Minechat(基于文本的应用程序,用于查看聊天。)我从来没有在网络方面做过太多工作,所以问题是如何正确发送数据包。我目前正在创建与服务器的握手。经过几个小时的研究,我终于想出了以下代码,但它总是会出现“失败!(异常)”的消息。对我来说,一切看起来都是正确的,但据我所知,它可能是100%错误的。如果有人能指出我做错了什么,我会非常感激。 作为参考,请随意