当前位置: 首页 > 编程语言 > C#

GetvariablesfromhttpcontextfromNSUrlRequestshare

时间:2023-04-10 13:22:06 C#

GetvariablesfromhttpcontextfromNSUrlRequest这个问题会是一个很好的教程,用于在Iphone和asp.net服务器之间进行http连接"POST":)IWhatIwanttodoissend从iphone到Asp.net服务器的图像;这是我在objective-c中的uploadImage函数:-(IBAction)uploadImage{/*将图像转换为NSData对象,将图像从UIImageView中取回,将质量设置为90*/NSData*imageData=UIImageJPEGRepresentation(image.image,33);//设置URL以发布到NSString*urlString=@"MyWebServiceUrl";//现在设置请求对象NSMutableURLRequest*request=[[[NSMutableURLRequestalloc]init]autorelease];[请求setURL:[NSURLURLWithString:urlString]];[请求setHTTPMethod:@"POST"];/*现在添加一些标题信息我们在发布文件时总是需要一个边界我们还需要设置内容类型你可能想要生成一个随机边界..这与我在有效的html帖子上从wireshark输出的一样*/NSString*boundary=[NSStringstringWithString:@"---------------------------14737809831466499882746641449"];NSString*contentType=[NSStringstringWithFormat:@"multipart/form-data;boundary=%@",boundary];[requestaddValue:contentTypeforHTTPHeaderField:@"Content-Type"];/*现在让我们创建帖子的正文*/NSMutableData*body=[NSMutableDatadata];[bodyappendData:[[NSStringstringWithFormat:@"rn--%@rn",boundary]dataUsingEncoding:NSUTF8StringEncoding]];[bodyappendData:[[NSStringstringWithString:@"Content-Disposition:form-data;文件路径="个人资料图片";filename="ipodfile"rn"]dataUsingEncoding:NSUTF8StringEncoding]];[bodyappendData:[[NSStringstringWithString:@"Content-Type:application/octet-streamrnrn"]dataUsingEncoding:NSUTF8StringEncoding]];[bodyappendData:[NSDatadataWithData:imageData]];[bodyappendData:[[NSStringstringWithFormat:@"rn--%@--rn",boundary]dataUsingEncoding:NSUTF8StringEncoding]];//将帖子的正文设置为请求[requestsetHTTPBody:body];//现在让我们连接到网络NSData*returnData=[NSURLConnectionsendSynchronousRequest:requestreturningResponse:nilerror:nil];NSString*returnString=[[NSStringalloc]initWithData:returnDataencoding:NSUTF8StringEncoding];NSLog(@"%@",returnString);这是我的webServiceFonctions,它解析发送的数据并保存文件:boolhasErrors=false;HttpFileCollectionfilesPosted=context.Request.Files;StringfilePath=context.Request.QueryString["文件路径"];StringfileName=context.Request.QueryString["文件名"];尝试{如果(String.IsNullOrEmpty(文件名)||String.IsNullOrEmpty(文件路径)||filesPosted.Count<=0)hasErrors=true;如果(!hasErrors){HttpContext.Current.Response.Write(WriteFile(filesPosted[0],filePath,fileName));}else{context.Response.Write("失败:解析错误");}}赶上(除了ionex){context.Response.Write("失败:异常错误::"+ex.Message);}}privatestringWriteFile(HttpPostedFilefile,StringfilePath,StringfileName){System.IO.Directory.CreateDirectory(filePath);整数计数器=0;stringpath=String.Format("{0}\{1}.jpg",filePath,fileName);while(System.IO.File.Exists(path)){counter++;path=String.Format("{0}\{1}-{2}.jpg",filePath,fileName,counter);}file.SaveAs(路径);返回路径;}publicboolIsReusable{get{returnfalse;我的问题来自这两行StringfilePath=context.Request.QueryString["filepath"];StringfileName=context.Request.QueryString["文件名"];context.Request.QueryString返回null所以我的hasErrors是假的;任何解决它的想法将不胜感激,感谢所有查询字符串将从Url参数填充(http://someserver.com/foobar?field1=value1&field2=value2)要访问在POST文本中发送的表单数据,请使用Request。Form["filepath"]或简写Request["filepath"],它在Form、QueryString、Cookies和ServerVariables集合中查找项目。发布文件的数据可以在Request.Files找到经过一天的尝试,解决方案如下:客户端代码://postbodyNSMutableData*body=[NSMutableDatadata];//添加参数(所有参数都是字符串)[bodyappendData:[[NSStringstringWithFormat:@"--%@rn",boundary]dataUsingEncoding:NSUTF8StringEncoding]];[bodyappendData:[[NSStringstringWithFormat:@"Content-Disposition:form-data;name="%@"rnrn",@"filename"]dataUsingEncoding:NSUTF8StringEncoding]];[bodyappendData:[[NSStringstringWithFormat:@"%@rn",imageName]dataUsingEncoding:NSUTF8StringEncoding]];//添加图像数据if(imageData){[bodyappendData:[[NSStringstringWithFormat:@"--%@rn",boundary]dataUsingEncoding:NSUTF8StringEncoding]];[bodyappendData:[[NSStringstringWithFormat:@"Content-Disposition:form-data;name="myImage";filename="image.jpg"rn"]dataUsingEncoding:NSUTF8StringEncoding]];[bodyappendData:[[NSStringstringWithString:@"Content-Type:image/jpegrnrn"]dataUsingEncoding:NSUTF8StringEncoding]];[正文附加数据:imageData];[bodyappendData:[[NSStringstringWithFormat:@"rn"]dataUsingEncoding:NSUTF8StringEncoding]];}Asp.net服务器代码:StringfilePath=context.Request.Form["filename"];希望大家喜欢这个问题(教程);)以上就是C#学习教程:从NSUrlRequest中获取httpcontext中变量共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表站队,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: