Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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
使用xcsrf令牌进行C#post_C#_Xml_Odata_Httpwebrequest_Csrf - Fatal编程技术网

使用xcsrf令牌进行C#post

使用xcsrf令牌进行C#post,c#,xml,odata,httpwebrequest,csrf,C#,Xml,Odata,Httpwebrequest,Csrf,我正在尝试使用C#fetchingx-csrf-token发布XML数据 我能够使用get方法获取令牌,当我尝试发布时,我收到403错误。 如果我错了,请帮助我 string-Token=”“; 公共字符串Postdata=“55556697abiabhchaitanyakennedy500060X”; 公共字符串URL=”http://server:8000/sap/opu/odata/sap/ZCUST_TESTING_SRV/post_cust"; HttpWebRequest请求=(Ht

我正在尝试使用C#fetching
x-csrf-token
发布XML数据

我能够使用get方法获取令牌,当我尝试发布时,我收到403错误。
如果我错了,请帮助我

string-Token=”“;
公共字符串Postdata=“55556697abiabhchaitanyakennedy500060X”;
公共字符串URL=”http://server:8000/sap/opu/odata/sap/ZCUST_TESTING_SRV/post_cust";
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(URL);
request.Credentials=新的网络凭据(“用户名”、“密码”);
request.ContentType=“应用程序/atom+xml”;
request.Accept=“application/xml,application/atom+xml”;
request.Method=“GET”;
请求头[“x-csrf-token”]=“Fetch”;
HttpWebResponse responseH=(HttpWebResponse)request.GetResponse();
令牌=响应头[“x-csrf-Token”];
//xcookies=responseH.Headers[“设置cookie”];
responseH.Close();
//在这里,我正在创建Post方法。。。
string requestString=HttpUtility.UrlPathEncode(数据)//XMLDoc是正在提交的XML数据字符串。
byte[]byteArray=System.Text.Encoding.ASCII.GetBytes(Postdata);
HttpWebRequest\u post=(HttpWebRequest)WebRequest.Create(URL);
request_post.Credentials=新的网络凭据(“用户名”、“密码”);
请求_post.Method=“post”;
请求\u post.ContentType=“应用程序/xml”;
请求\u post.Accept=“应用程序/xml”;
请求发布头[“x-csrf-token”]=token;
request_post.ContentLength=byteArray.Length;
request_post.KeepAlive=false;
Stream dataStream1=request_post.GetRequestStream();
dataStream1.Write(byteArray,0,byteArray.Length);
dataStream1.Close();
HttpWebResponse response1=(HttpWebResponse)请求_post.GetResponse();
dataStream1=response1.GetResponseStream();
StreamReader reader1=新的StreamReader(dataStream1);
字符串responseFromServer1=reader1.ReadToEnd();
reader1.Close();
dataStream1.Close();
响应1.Close();

看不出您的代码有任何错误。只需发布一些一般提示:

  • 您确定NetworkCredential用户名/密码吗

  • 尝试查看模拟浏览器是否会有所不同,例如:

    request_post.UserAgent=“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/535.2(KHTML,如Gecko)Chrome/15.0.874.121 Safari/535.2”

  • 检查您的请求参数和标题是否正确(接受, 内容类型)

  • 您能否以其他方式成功完成此请求?你是想 模仿web应用程序的行为?您可以使用该web应用程序并查看 使用并确保 所有标题都正确(包括cookie)


对不起,问题:1)什么是“方法”URL?2) 您的Postdata变量是否成为Postdata变量?你使用的是同一个变量吗?嗨,很抱歉,这不是url方法,即使这样,我也会得到相同的错误。我可以在Rest API和Android中这样做,但使用这个C#,我无法发布相同的数据。据我所知,我认为令牌没有得到验证。上面写着403禁止。首先帮助meCheck Fiddler处理成功的REST请求和此失败的请求,以便您知道以不同方式发送的数据。我不是在设备上使用它,我只是在Visual Studio 2013 C#Windows窗体应用程序上尝试。请帮助我。如果你不知道正确的请求数据应该是什么,我想我没有办法帮助你。你的网站也是内部的,所以我帮不了你