Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSURLConnection将JSON数据发布到ASP.Net WebAPI而不返回响应_Objective C_Ios_Asp.net Web Api - Fatal编程技术网

Objective c NSURLConnection将JSON数据发布到ASP.Net WebAPI而不返回响应

Objective c NSURLConnection将JSON数据发布到ASP.Net WebAPI而不返回响应,objective-c,ios,asp.net-web-api,Objective C,Ios,Asp.net Web Api,我目前正在使用异步NSURLConnection向ASP.NETWebAPI资源发布json数据。正在调用连接:didSendBodyData:TotalBytesWrite:totalBytesExpectedToWrite:,并且正在写入正确数量的数据。但是没有调用连接:didReceiveResponse:、连接:didReceiveData:或ConnectiondDifinishLoading:,但最终它放弃了,连接丢失 我正在按如下方式设置连接: NSURL *url = [[NSU

我目前正在使用异步NSURLConnection向ASP.NETWebAPI资源发布json数据。正在调用连接:didSendBodyData:TotalBytesWrite:totalBytesExpectedToWrite:,并且正在写入正确数量的数据。但是没有调用连接:didReceiveResponse:、连接:didReceiveData:或ConnectiondDifinishLoading:,但最终它放弃了,连接丢失

我正在按如下方式设置连接:

NSURL *url = [[NSURL URLWithString:[Common baseUrl]] URLByAppendingPathComponent:@"api/iCat/wishlists/upload"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.f];
NSString *jsonString = [self generateStrippedJsonForWishlist:wishlist];
NSData *requestData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [jsonString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:requestData];
以及启动与以下各项的连接:

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
最终,请求将超时,并显示“网络连接丢失”错误消息。在我看来,应用程序似乎从未完全完成消息正文的编写

从api方面看,该方法从未真正被调用(断点未被命中)。但是如果我不带任何人发送请求,那么它就会发送

我已经使用curl测试了相同的调用,它按照预期工作:

curl -v -i -X POST -H "Content-Type: application/json" -d '{"CreatedBy":"iPad Simulator","ContactName":"Ddd","ContactEmail":"ddd","Products":[{"ProductId":117,"ProductName":"Internal doors - deco","Specification":""}]}' http://SCMOBILE02:1861/api/iCat/wishlists/upload

在发布json数据时尝试库。

您可以尝试下面的代码吗

-(void) post
{
    NSString * a = @"{company_name : \"com\"}";
    NSString * URL = @"yourUrl";

    NSString *post = [NSString stringWithFormat: @"%@",a];
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
    [request setURL:[NSURL URLWithString:URL]];

    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setTimeoutInterval:20.0];
    [request setHTTPBody:postData];


    [NSURLConnection connectionWithRequest:request delegate:self];

}
在您的web api中,您应该具有如下类和post方法

        public class company 
        {
            public string company_name { get; set; }


        }


       // POST api/values
        public void Post([FromBody]company value)
        {
            var t = value;
        }

你能发布你的方法不起作用吗?requestData是否为零?jsonString中有什么?在本例中,json字符串是:{“CreatedBy”:“iPad模拟器”,“ContactName”:“Sss”,“ContactEmail”:“Sss”,“Products”:[{“ProductId”:117,“ProductName”:“Internal doors-deco”,“Specification”:“}]}否,requestData不是零。正如我提到的,连接:didSendBodyData:TotalBytesWrite:totalBytesExpectedToWrite:返回整个正文已写入服务器。没有调用任何其他委托方法,也没有触发服务器方法。是否可以使用fiddler()捕获发送到服务器的请求头和消息?很值得与有效的CURL请求进行比较。如果你也把它贴到你的问题上,它可能会帮助其他人诊断这个问题。