Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема с методом POST при передаче JSON в WCF REST / 10 сообщений из 10, страница 1 из 1
16.03.2015, 07:51
    #38905476
Проблема с методом POST при передаче JSON в WCF REST
Есть сервис:
Код: c#
1.
2.
3.
[OperationContract]
        [WebInvoke(UriTemplate = "/GetOrder/", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        string GetOrder(Orders[] order);


Описание данных:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
[DataContract]
    public class Orders
    {
        [DataMember(Order = 1)]
        public string product_id { get; set; }

        [DataMember(Order = 2)]
        public string product_name { get; set; }
    }


Код клиента:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<html>
<HEAD>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>

    <script type="text/javascript">
        
        var arrObjects = []; // объявление массива

        arrObjects[0] = {
            product_id: "1",
            product_name: "Апельсин"
        }
        arrObjects[1] = {
            product_id: "2",
            product_name: "Банан"
        }
        var a = JSON.stringify(arrObjects);

        jQuery.ajax({
            url: "http://localhost/mb_services/Service.svc/GetOrder/",
            dataType: "json",
          
        type: "POST",
        async: false,
        data: a,
        contentType: "application/json; charset=utf-8",
        dataFilter: function (data) { return data; },
        success: function (data) {
        },
        error: function (ex) {
            alert(ex.responseText);
        }
            
        });
</script>
</HEAD>

<BODY link=#FF0000 vlink=#FF0000 bgcolor=#FFFFFF>
    
</BODY>
</html>



При выполнении запроса возникает ошибка:
Код: html
1.
2.
Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
jquery-1.8.2.min.js:2 XMLHttpRequest cannot load http://localhost/mb_services/Service.svc/GetOrder/. Invalid HTTP status code 405 


Не могу понять, что я делаю не так.
По знаниям этой области я полный новичок, поэтому не исключаю, что причина ошибка банальна. Прошу помочь.
...
Рейтинг: 0 / 0
16.03.2015, 12:14
    #38905726
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с методом POST при передаче JSON в WCF REST
...
Рейтинг: 0 / 0
16.03.2015, 13:18
    #38905830
Проблема с методом POST при передаче JSON в WCF REST
Winnipuh, переделал все как в примере.
Сервис:
Код: c#
1.
2.
3.
4.
5.
6.
[OperationContract]
        [WebInvoke(Method = "POST",
                    RequestFormat = WebMessageFormat.Json,
                    ResponseFormat = WebMessageFormat.Json,
                    UriTemplate = "GetOrder/{id}")]
        string GetOrder(Orders order, string id);


Клиент:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
<html>
<HEAD>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script type="text/javascript">

        function doOrder() {
            var order = {
                "product_id": 0,
                "product_name": "WCF RESTful Service by Example"
            }

            $.ajax({
                type: "POST",
                url: "http://localhost/mb_services/Service.svc/GetOrder/0",
                data: JSON.stringify(order),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                processData: true,
                success: function (data, status, jqXHR) {
                    alert("success..." + data);
                },
                error: function (xhr) {
                    alert(xhr.responseText);
                }
            });
        }
</script>
</HEAD>

<BODY link=#FF0000 vlink=#FF0000 bgcolor=#FFFFFF>
   <button id="fdsf" onclick="doOrder()">Кнопочка</button>
</BODY>
</html>



Ошибка та же:
Код: plaintext
1.
2.
Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
1.htm:1 XMLHttpRequest cannot load  http://localhost/mb_services/Service.svc/GetOrder/0.  Invalid HTTP status code 405
jquery-1.8.2.min.js:2 OPTIONS  http://localhost/mb_services/Service.svc/GetOrder/0  
...
Рейтинг: 0 / 0
16.03.2015, 13:30
    #38905848
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с методом POST при передаче JSON в WCF REST
DmitriyVladimirovich,
HTTP Error 405 Method not allowed. Post method... Очевидно на данном web сервере стоит запрет на обращение к методу GetOrder через метод Post. Попробуйте Get.
...
Рейтинг: 0 / 0
16.03.2015, 13:37
    #38905855
Проблема с методом POST при передаче JSON в WCF REST
Axeleron, хотелось бы использовать POST. Отправлять json строку через заголовок не очень круто.
Отправляю содержимое web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>

<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="Services.IService">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="Services.Service" >
<endpoint binding="webHttpBinding" contract="Services.IService" behaviorConfiguration="webHttp" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
Для просмотра корневого каталога веб-приложения во время отладки установите значение true.
Перед развертыванием установите значение false, чтобы избежать раскрытия сведений в папке веб-приложения.
-->
<directoryBrowse enabled="true"/>
<httpProtocol>
<customHeaders>
<!-- Enable Cross Domain AJAX calls -->
<remove name="Access-Control-Allow-Origin" />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
<connectionStrings>
<add name="mbusiness".....................>
</connectionStrings>
</configuration>
...
Рейтинг: 0 / 0
16.03.2015, 13:40
    #38905862
Проблема с методом POST при передаче JSON в WCF REST
Прошу прощения за корявую вставку кода. Не думал, что здесь нельзя редактировать посты.
...
Рейтинг: 0 / 0
16.03.2015, 13:43
    #38905866
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с методом POST при передаче JSON в WCF REST
DmitriyVladimirovich,
EnableCors выставлен в true на стороне сервера?
...
Рейтинг: 0 / 0
16.03.2015, 13:54
    #38905885
Проблема с методом POST при передаче JSON в WCF REST
Axeleron, нет.
Нужно что-то дописать к веб-сервису? Или это делается в web.config?
Можете подсказать на моем примере, что нужно добавить и в какое место.
Заранее благодарен.
...
Рейтинг: 0 / 0
16.03.2015, 13:59
    #38905894
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с методом POST при передаче JSON в WCF REST
DmitriyVladimirovich,
Посмотрите в разделе Enable CORS
...
Рейтинг: 0 / 0
03.04.2015, 09:31
    #38925881
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с методом POST при передаче JSON в WCF REST
DmitriyVladimirovich,

Почему обращение не по httpS ? Хотя он явно прописан. Для локальной отладки уберите securitymode
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема с методом POST при передаче JSON в WCF REST / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]