- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 ASIFormDataRequest 将数据发送到 ASP.net 服务器端。我创建了一个aspx页面。目前我可以得到这两个纯文本。但是我不知道如何通过 Request.Form 在 C# 中使用 NSdata。
这是 Obj-C 代码:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"name"];
[request setPostValue:@"Copsey" forKey:@"code"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];
这是当前的 C# 代码:
string name = Request.Form["name"] == null ? "" : Request.Form["name"];
string code = Request.Form["code"]==null?"":Request.Form["code"];
如您所见,在 iphone 中,我尝试将图像发送到 C# 服务器端,但我不知道该怎么做?
最佳答案
要使用 ASIFormDataRequest 将图像向下发送到 WCF REST 服务。这是我们在生产中的一个项目的示例...
假设我在名为“image”的 var 中有一个 UIImage
NSString *surl = @"http:www.SomeRestService.com"
NSURL *url = [NSURL URLWithString:surl];
ASIFormDataRequest *r = [ASIFormDataRequest requestWithURL:url];
[r setValidatesSecureCertificate:NO];
[r setTimeOutSeconds:30];
[r setRequestMethod:@"POST"]; //default is POST (insert),
[r setDelegate:self];
[r setDidFailSelector:@selector(requestDidFail:)];
//[r addRequestHeader:@"Content-Type" value:@"application/json"] this will cause the call to fail. No content-type header for this call.
NSMutableData *imageData = [NSMutableData dataWithData:UIImageJPEGRepresentation(image, .35)]; //we are really compressing our images.. you can do what you want, of course.
[r setPostBody:imageData];
[r setDidFinishSelector:@selector(imageSaveDidFinish:)];
[r startAsynchronous];
好的,在 WCF 端,您需要定义一个接收 System.IO.Stream 的方法,并且 Stream 需要是定义的最后一个参数,它应该是一个 POST,并且不应包含任何其他参数POST 主体的一部分(您可以在 URL 和查询字符串中定义参数,尽管一些纯粹主义者会说这对于 REST POST 来说是不好的形式)。
[WebInvoke(UriTemplate = "Upload", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, Method = "POST")]
public GenericObject SaveReceiptImage(System.IO.Stream imageStream)
{
try
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read = 0;
while ((read = imageStream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
ms.Position = 0;
if (ms.Length > 0)
{
//save your byte array to where you want
}
else
{
// woops, no image was passed in
}
}
}
catch (Exception ex)
{
//bad error occured, log it
}
return whatever;
}
关于c# - 使用ASIFormDataRequest时如何实现C#服务器端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847394/
当我有一个待处理的 ASIFormDataRequest(作为异步任务启动)仍在执行并且用户按下后退按钮(为了弹出 View )时,我的 viewController 出现问题。 有什么方法可以停止该
我正在使用 ASIFormDataRequest 发布三个值,即 url、标题和摘要。它们都在模拟器上运行良好,但在设备上运行不正常。这是我正在使用的代码: - (IBAction)addLinkPr
我正在使用 ASIFormDataRequest 在服务器上发送请求。我的问题是 - 如何检查应该发送到服务器的请求字符串。 例如这样的字符串: client=100001&time=13412712
正如我在ASI Documentation中读到的那样,其写道:“上传二进制数据或文件时,数据以‘application/x-www-form-urlencoded’格式发布,或以‘multipart
我必须将图像上传到我使用 NSMutableURLRequest 编写代码的服务器,如下所示 NSString *boundary = [NSString stringWithString:@"---
我正在尝试使用 ASIFormDataRequest 将文件上传到服务器(从自定义 mac os 应用程序)。在我的 cocoa/obj-c 代码中,我有: - (IBAction)uploadFil
我正在向网络服务器发送带有 POST 数据的请求。如果出现错误,Web 服务器将返回 JSON 响应,如果没有错误,则返回文件数据本身。 我想跟踪文件数据响应的进度。我的代码基于 ASIHttpReq
在我的应用程序中,我遇到了多个 Web 服务同时被占用的场景。我想知道检查特定 ASIFormDataRequest 是否仍在进行中的最佳方法。 最佳答案 您可以像 yourRequest.tag 一
我在跟踪 ASIFormDataRequest 的下载进度时遇到问题。我可以轻松获取上传进度,但无法获取下载进度。 在 ASIHTTPRequest site 上的示例中他们使用 ASIHTTPReq
我使用 ASIFormDataRequest 登录服务器,管理 requestFinished 方法内的响应。如果响应正常,我需要向服务器发起另一个请求来下载 JSON。我应该在哪里管理响应(因为我正
我已在我的应用程序中包含了所有必需的文件(here 中列出的 .h 和 .m 文件)然后我手动添加 .m 文件来编译源代码并运行我的代码。 我运行了我的应用程序,但我的服务器上没有任何反应。脚本上的服
是否可以使用 ASIFormDataRequest 上传捕获视频的帧? 我有代码: - (void)viewDidLoad { [super viewDidLoad];
我正在尝试通过以下代码使用 ASIFormDataRequest: NSURL *url = [NSURL URLWithString: urlString]; ASIFormDataRequest
我正在使用此代码将数据发布到我的服务器 NSURL *mainurl = [NSURL URLWithString:@"http://xxxxxxxxxx/api/PhonePaymentApi/Tr
我已经写了fellowing代码: NSString *urlString = [NSString stringWithFormat:ADDRESS,action]; postStr = @"user
我正在使用以下代码将用户名和密码设置为网站上的表单: ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url
我想将图像从 iphone/ipad 发布到 .net 服务。当前我正在使用 ASIFormDataRequest,但出现错误 "Request format is invalid: multipar
我正在使用 ASIFormDataRequest 将多部分 POST 数据发送到服务器 Rails。 我使用文本字段设置值并发送 POST 的代码片段如下: NSURL *url = [NSURL U
如何使用 block 取消 ASIFormDataRequest? __block ASIFormDataRequest *req = [ASIFormDataRequest requestWithU
我正在尝试使用 ASIFormDataRequest 发送发布请求。但是当我导入文件时 导入“ASIFormDataRequest.h” 我遇到错误“找不到 ASIFormDataRequest.h”
我是一名优秀的程序员,十分优秀!