Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
C# 在WCF rest服务中如何在没有URI的情况下通过POST发送数据_C#_.net_Rest_Wcf_Post - Fatal编程技术网

C# 在WCF rest服务中如何在没有URI的情况下通过POST发送数据

C# 在WCF rest服务中如何在没有URI的情况下通过POST发送数据,c#,.net,rest,wcf,post,C#,.net,Rest,Wcf,Post,我是WCF的新手。我正在尝试实现用于身份验证的restful服务 我的WCF代码如下 [OperationContract] [WebInvoke(Method="POST", UriTemplate = "auth", RequestFormat=WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle=WebMessageBodyStyle.Wrapped)] Employee a

我是WCF的新手。我正在尝试实现用于身份验证的restful服务

我的WCF代码如下

    [OperationContract]
    [WebInvoke(Method="POST", UriTemplate = "auth", RequestFormat=WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle=WebMessageBodyStyle.Wrapped)]
    Employee authEmployee(String username, String password);
我在这里需要做的是在不通过URL接收的情况下获取用户名和密码。 我如何做到这一点

这可能是专家们的一个基本问题,但我对这一点还不熟悉。感谢您的帮助

谢谢

{“操作”:“身份验证”,“属性”:{“帐户名”:“管理员”, “密码”:“密码”}。这就是客户端发送数据的方式。所以 我的服务方法中应该有3个参数吗?为了行动, 帐户名和密码

在这种情况下,您的服务操作应如下所示:

Employee authEmployee(string action, attributes attr);
将属性类型定义为:

class attributes
{
    string AccountName { get; set; }
    string Password { get; set; }
} 
顺便说一句,如果您以这种方式以明文形式传递凭据,那么它并不特别安全

{“操作”:“身份验证”,“属性”:{“帐户名”:“管理员”, “密码”:“密码”}。这就是客户端发送数据的方式。所以 我的服务方法中应该有3个参数吗?为了行动, 帐户名和密码

在这种情况下,您的服务操作应如下所示:

Employee authEmployee(string action, attributes attr);
将属性类型定义为:

class attributes
{
    string AccountName { get; set; }
    string Password { get; set; }
} 

顺便说一句,如果您以这种方式以明文形式传递凭据,则不会特别安全。

为了清晰起见,我将在此处重写我的注释


例如,客户端应该通过创建请求和正确设置请求字段来调用服务方法

HttpWebRequest req =(HttpWebRequest)HttpWebRequest.Create(uri);

req.Method = "Post"; 
req.ContentType = "application/json";
byte[] bodyBytes = Encoding.UTF8.GetBytes("{\"Name\":\"John Doe\",\"Age\":33}");

req.GetRequestStream().Write(bodyBytes, 0, bodyBytes.Length);  
req.GetRequestStream().Close();
当然

resp = (HttpWebResponse)req.GetResponse();
这样,消费者必须传递值,但这些值不会直接通过url传递


我认为方法名是在URI中传递的,只有该方法需要的属性才在json中传递

为了清晰起见,我将在这里重写我的评论


例如,客户端应该通过创建请求和正确设置请求字段来调用服务方法

HttpWebRequest req =(HttpWebRequest)HttpWebRequest.Create(uri);

req.Method = "Post"; 
req.ContentType = "application/json";
byte[] bodyBytes = Encoding.UTF8.GetBytes("{\"Name\":\"John Doe\",\"Age\":33}");

req.GetRequestStream().Write(bodyBytes, 0, bodyBytes.Length);  
req.GetRequestStream().Close();
当然

resp = (HttpWebResponse)req.GetResponse();
这样,消费者必须传递值,但这些值不会直接通过url传递


我认为方法名是在URI中传递的,只有该方法需要的属性才在json中传递

我很确定,如果您使用HttpWebRequest req=(HttpWebRequest)HttpWebRequest.Create(uri)调用您的服务;然后您需要uri,但在设置方法时,用户名和密码不会随uri一起传递;这是否意味着,消费者不需要在URI中传递值,但我将在用户名和密码变量中获取值??您的客户端应该通过创建请求并正确设置请求字段来调用服务方法,例如HttpWebRequest req=(HttpWebRequest)HttpWebRequest.Create(URI);requ.methodos=“Post”;req.ContentType=“应用程序/json”;byte[]bodyBytes=Encoding.UTF8.GetBytes(“{\'Name\':\'johndoe\',\'Age\':33}”);req.GetRequestStream().Write(bodyBytes,0,bodyBytes.Length);req.GetRequestStream().Close();这样,使用者必须传递值,但值不会直接通过url{“操作”:“身份验证”,“属性”:{“帐户名”:“管理员”,“密码”:“密码”}}传递。这就是客户端发送数据的方式。那么我的服务方法中应该有3个参数吗?对于操作,AccountName和Password?@PawełSwajdo您应该发布一个答案而不是评论。我很确定如果您使用HttpWebRequest req=(HttpWebRequest)HttpWebRequest.Create(uri)调用您的服务;然后您需要uri,但在设置方法时,用户名和密码不会随uri一起传递;这是否意味着,消费者不需要在URI中传递值,但我将在用户名和密码变量中获取值??您的客户端应该通过创建请求并正确设置请求字段来调用服务方法,例如HttpWebRequest req=(HttpWebRequest)HttpWebRequest.Create(URI);requ.methodos=“Post”;req.ContentType=“应用程序/json”;byte[]bodyBytes=Encoding.UTF8.GetBytes(“{\'Name\':\'johndoe\',\'Age\':33}”);req.GetRequestStream().Write(bodyBytes,0,bodyBytes.Length);req.GetRequestStream().Close();这样,使用者必须传递值,但值不会直接通过url{“操作”:“身份验证”,“属性”:{“帐户名”:“管理员”,“密码”:“密码”}}传递。这就是客户端发送数据的方式。那么我的服务方法中应该有3个参数吗?关于操作、帐户名和密码?@PawełSwajdo您应该发布答案而不是评论。谢谢。我试试这个谢谢。我试试这个