我正在尝试使用NSURLSession在后台上传对象到我的WebAPI。我的Web API是可操作的,但问题是客户端代码运行到CreateUploadTask()方法时会抛出一个空异常,并且输出窗口中也没有任何信息来指示问题所在。以下是我用于初始化的代码:
private NSUrlSessionConfiguration configuration = NSUrlSessionConfiguration.BackgroundSessionConfiguration ("com.SimpleBackgroundTransfer.BackgroundSession");
private NSUrlSession session;
public void SendBackgroundMessage(AppMessage m)
{
session = NSUrlSession.FromConfiguration(configuration, new UploadDelegate(), new NSOperationQueue());
NSUrl uploadHandleUrl = NSUrl.FromString(Constants.ApiUrl + "api/AppMessage/Send");
NSMutableUrlRequest request = new NSMutableUrlRequest(uploadHandleUrl);
request.HttpMethod = "POST";
request["Content-Type"] = "application/json";
var keys = new object[] { "Authorization" };
var objects = new object[] { _accessToken };
var dictionary = NSDictionary.FromObjectsAndKeys(objects, keys);
request.Headers = dictionary;
string json = JsonConvert.SerializeObject(m);
var body = NSData.FromString(json);
var uploadTask = session.CreateUploadTask(request, body);
uploadTask.Resume();
}
我怀疑这与我序列化为json和创建NSData对象的方式有关。如果您有任何提示,将不胜感激!
编辑:好吧,如果我删除body参数,上传任务就会成功创建。这与我组合json的方式有关。