C#RESTSharp客户端连接Drupal Rest_server用户匿名访问被拒绝 [英] C# RESTSharp client connect Drupal Rest_server Access denied for user anonymous
问题描述
我在搜索这篇文章使用c#使用Drupal RestApi
和 http://tylerfrankenstein.com/code/ drupal-services-csrf-token-firefox-poster
我在cookie和令牌中有问题。我在firefox的海报中测试,并成功发布创建的文章.Tamper Data有请求标题。
I has question in the cookie and token. I have test in poster with firefox and successful on post the created article .Tamper Data has the request header.
nid:129342
uri: http:// www .tsghy.com.cn / services / node / 129342
nid: "129342" uri: http://www.tsghy.com.cn/services/node/129342
邮递员创建了邮政编码
var client = new RestClient("http://www.tsghy.com.cn/services/node");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "5c28c9d6-d640-a4f0-a549-b6018e62907d");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("x-csrf-token", "s0Z17LT7neX_K6grHgoJCUPR6VcL2QxRlNLmbRWeExE");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "type=article&title=test%201", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
我会疯狂,
到C#,我的访问被拒绝为用户匿名。这是我的代码如下:
首先我登录Drupal与休息
And replace to the C# ,i has Access denied for user anonymous.this my code with below : First I login the Drupal with Rest
private login_user2 loginAsync2(string username, string password)
{
try
{
RestClient client = new RestClient(base_url2);
var request = new RestRequest("user/login.json", Method.POST);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
client.Authenticator = new SimpleAuthenticator("username",username,"password",password);
var restResponse = client.Execute(request);
var content = restResponse.Content;
if (restResponse.StatusCode==System.Net.HttpStatusCode.OK)
{
login_user2 loginuser = JsonConvert.DeserializeObject<login_user2>(content.ToString());
request = new RestRequest("session/token", Method.GET);
restResponse = client.Execute(request);
loginuser.session_token = restResponse.Content.ToString();
return loginuser;
}
else {
return null;
}
}
catch (Exception ex) { throw ex; }
}
我在login / user->令牌和会话/令牌上有问题,哪个区别?
I have question at the login/user->token and session/token ,which the difference?
第二,发布创建数据:
RestClient client = new RestClient(base_url2);
var request = new RestRequest("node", Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/json; charset=UTF-8");
request.AddHeader("Accept", "application/json");
request.AddHeader("cookie", "Drupal.toolbar.collapsed=0; "+current_user2.session_name+"="+current_user2.sessid+"; has_js=1");
request.AddHeader("x-csrf-token",current_user2.session_token);
request.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0");
request.AddParameter("application/json", myjobject, ParameterType.RequestBody);
var queryresult = client.Execute(request);
推荐答案
是的,我发现了钥匙, request.addheader(cookie,cookie);
更改为:request.AddParameter(session_name,session_id,parametertype.cookie);
yes,I found the key,restful has bug at the request.addheader(cookie,cookie); change to :request.AddParameter(session_name,session_id,parametertype.cookie);
这篇关于C#RESTSharp客户端连接Drupal Rest_server用户匿名访问被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!