I have the WCF Race Service (using JSN) that receives the username and password and gives customer information. This method is the interface.
// name [OperationContract] [WebInvoke Clients (UriTemplate = "/ GetCustomerByName", method = "post", Bodystyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat. Jesn, Anurodformet = Vebmelformat .jason]] List & Model; Model Customers & gt; GetCustomerByName (Model.CustomerNameCustomerData);
I have to call this method in MVC5 and give it a parameter. Not sure how to pass the parameters.
In this way, I call this service:
readonly string customerServiceUri = "http: // localhost: 63674 / CSA.svc /"; Public Action Search SearchByName (InputData model) {list & lt; CustomerModel & gt; Customer Model = New List & lt; CustomerModel & gt; (); If (ModelState.IsValid) {if (model! = Null) using {(WebClient webclient = new WebClient ()) {String jsonStr = webclient.DownloadString (String.Format ( "{0} GetCustomerByName? CustomerData = {1} ", Customer service service, model)); If {var results = JsonConvert.DeserializeObject & lt (string.IsNullOhWhiteSpace (jsonStr)!); Models.CustomerModel.Result & gt; (JsonStr); If (result! = Zero) {customerModel = result.GetCustomersByNameResult; }}}}} See Return (Customer Model); }
I'm getting an error on this line right:
string jsonStr = webclient.DownloadString (String.Format ("{0} GetCustomerByName CustomerData = {1} ", customer service service, model));
And this is the error:
Remote server returned an error: (405) method not allowed.
and this is the InputData class:
public class InputData {public string First_Name {get; Set; } Public string Last_Name {get; Set; The problem is that the line of code is calling service, it is wrong. Since you pass the value in the url, the code line GET
is making a request, no a POST
. If you are ready to request a post
, please What's wrong with the code?
String JsonStr = webclient.DownloadString (string.Format ("{0} GetCustomerByName? CustomerData = {1}", customer service service, model));
1) This error is not allowed in the (405) method because you expect
because a POST
request is required And get
request
2) so that the output will be something like: http: // localhost:. 63.674 / CSA.svc / GetCustomerByName CustomerData = [SolutionName] [ProjectName] .InputData This is happening because C # does not know how InputData the way you want, you must override method toString ()
.
Possible Solutions
Try to request a
, you will need to call this service like this ( With some modifications))
string jsonStr = webclient.DownloadString (string.Format ("{0} GetCustomerByName? First name = {1} and last name = {2}", customer service service Model, first_name, model last name));
You must modify the service to match the example created for the GET
request.
// Get the customer name [OperationContract] [WebGet (UriTemplate = "GetCustomerByName firstName = {firstName} & lastName = {lastName}")] & lt; Model.Customer & gt; GetCustomerByName (string first name, string last name);
No comments:
Post a Comment