2011-12-24 3 views
0

Я делаю метод GET, называю его ссылкой, и все в порядке. Вот оно:Вызов метода post в службе RESTful wcf

[OperationContract] 
    [WebInvoke(
     Method = "GET", 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "/myMethod/{input}", 
     BodyStyle = WebMessageBodyStyle.Bare 
     )] 
    MyClass myMethod(string input); 

А вот URL, с которым я звоню его: http://localhost:1234/Service1.svc/json/myMethod/blabla

Однако, когда я делаю метод столба, он не работает. Вот мой метод POST:

[OperationContract] 
    [WebInvoke(
     Method = "POST", 
     ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Bare 
     )] 
    MyClass anotherMethod(string comeOn); 

и я называю его по этой ссылке: http://localhost:1234/Service1.svc/json/anotherMethod?comeOn=smthing и говорит Метод не допускается.

Как я могу назвать метод POST?

+0

Является ли это дубликат вопрос к этому? http://stackoverflow.com/questions/1144166/problem-with-post-request-to-restful-wcf-service –

+0

@TomislavMarkovski Нет, я просто прошу указать URL. –

+1

Если вы запрашиваете URL-адрес, вы получаете метод GETting. Вы не можете отправить POST, запросив URL-адрес. –

ответ

2

Ok поэтому разница между POST и GET, что GET у вас есть все Params на строку запроса, в то время как POST имеет Params внутри тела сообщения запроса.

http://wiki.answers.com/Q/What_is_the_difference_between_get_and_post_method_in_HTTP

Ваш второй вызов фактически делает GET, следовательно, почему он не позволяет этого метода.

Способ проверки сообщения можно найти здесь.

How to simulate browser HTTP POST request and capture result in C#

+0

Это означает, что каждый метод, для которого мой клиент должен вводить ввод, метод будет GET правильно? –

+0

Нет, это должно быть сообщение. Если вы выдаете запрос со всеми параметрами QS, то это будет GET. Методы HTTP очень важны для хорошего спокойного дизайна. С помощью POST, поскольку параметры находятся в теле метода, существует гораздо более высокий предел содержания, который может быть отправлен службе. Это то, что имеет смысл? –

+0

@rangitaz Но если параметры метода POST находятся в коде, это означает, что пользователь не может ввести их, правильно? И это означает, что каждый метод, который требует ввода пользователем ввода, - GET. –

Смежные вопросы