Передача данных JSON из Angularjs в WCF - это ошибка 400 ошибочных запросов

0

Вызов этой функции на угловой функции нажатия кнопки

$scope.CreateNewTopic = function () {
          var userdata = {
        TopicName:$scope.topicname,
        TopicDescription: $scope.topicdescription,
        OriginalPosterID: $scope.userid,
        CategoryID: $scope.selectedcategory
    };
        DataService.InsertTopicObject(userdata) 

Метод обслуживания приведен ниже.

InsertTopicObject: function (topic) {
            $http({
                method: 'POST',
                url: connectionurl + 'InsertNewTopic',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' },

                data:  topic 
            })
            .success(function (data, status, headers, config) {
                // successcallback(data); 
                console.log(data);
            })
            .error(function (data, status, headers, config) {
                $log.warn(data, status, headers, config);
            })
        }

WCF

[OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "/InsertNewTopic", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped)]
        int InsertNewTopic(InsertNewTopic InsertTopicObject);

public int InsertNewTopic(InsertNewTopic InsertTopicObject) {

            return SqlHelper.ExecuteNonQuery(SqlConnectionString.GetConnection(), CommandType.StoredProcedure, Constants.SP_Name.ToString(), new SqlParameter("TopicName", InsertTopicObject.TopicName), new SqlParameter("TopicDescription", InsertTopicObject.TopicDescription), new SqlParameter("OriginalPosterID", InsertTopicObject.OriginalPosterID), new SqlParameter("CategoryID", InsertTopicObject.CategoryID));

        }

Появилась следующая ошибка.

введите описание изображения здесь

  • 0
    Api ожидает тип контента Json. Попробуйте удалить заголовок Content-Type . (Или даже удалите эту строку во всех headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' }, )
  • 0
    Спасибо, Алексей. Я попробовал то же самое, и это не работает, получая ту же ошибку. Пожалуйста, помогите мне.
Теги:
wcf

1 ответ

0

Вы должны дважды проверить данные, которые вы отправляете. Когда RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped указан, ожидаемый формат тела: {"parameterName":parameterValue}. Таким образом, у вас есть два варианта:

1 - Вы можете изменить BodyStyle на WebMessageBodyStyle.Bare
2 - Другой вариант - отправить ваши данные "завернутые":

$http({
    method: 'POST',
    url: connectionurl + 'InsertNewTopic',
    data:  {
        'InsertTopicObject' : topic
    }
})
  • 0
    Алексей Пожалуйста, проверьте следующую ошибку в моей консоли Object {method: "POST", transformRequest: Array[1], transformResponse: Array[1], url: "http://localhost:8020/DFServices.svc/InsertNewTopic", data: Object…} data:Object InsertTopicObject:Object CategoryID:3 OriginalPosterID:"11" TopicDescription:"<pre><!--block-->sample sample<br>sample description</pre>" TopicName:"Sample data" Пожалуйста, предоставьте мне решение для вышеуказанных данных, а также для вашей информации
  • 0
    Можете ли вы дать мне одно решение, пожалуйста.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню