ali_1 Ответов: 1

Могу ли я получить XML-запрос в ASP.NET веб-API (MVC 4)


Я создал веб-API с помощью asp.net с базовой аутентификацией.
Вот моя ссылка на метод get :
localhost:XXX/api/Products/X1

Но клиенту нужен запрос и ответ в формате XML с включенным в него идентификатором продукта и учетными данными аутентификации .

Пример :
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ssss/">
  <wsVersion>1</wsVersion>
  <id>user1</id>
  <password>pass1</password>
  <productID>X1</productID>
  <ptype>test</ptype>
</Request>


это метод контроллера продукта для GET

public HttpResponseMessage Get(string id)
     {
         var product = _productService.Get(id);
         if (product != null)
             return Request.CreateResponse(HttpStatusCode.OK, product);
         return Request.CreateErrorResponse(HttpStatusCode.NotFound, "data not found for provided id.");
     }



Могу ли я изменить формат запроса как XML внутри моего веб-API ? или мне нужно создать для этого сервис WCF ?

Что я уже пробовал:

Нужно ли менять WEBapi на сервис WCF ?

Atlapure Ambrish

В чем была проблема с решением, которое я предоставил?

ali_1

Я использую расширение chrome" Advanced Rest Client". Также добавлены заголовки, упомянутые в формате XML-запроса
URL был localhost:XXX/api/Products/ (без Id, потому что ID уже добавлен в заголовок, Почему он не принимает этот запрос? Сейчас я возвращаю все данные целиком. Нужно ли вносить какие-либо изменения в url-адрес ?

Atlapure Ambrish

Где вы упомянули об этом в своем первоначальном запросе? перед голосованием вы должны поделиться такими подробностями. не так ли??

ali_1

Код контроллера продукта :

Я включил в нем базовую аутентификацию

[ApiAuthenticationFilter]
public class ProductsController : ApiController
{
частная чтения IProductService _productService;
public ProductsController()
{
_productService = new ProductService();
}
# региональные методы
// GET api/Products / id
public HttpResponseMessage Get (string id)
{
продукт ВАР = _productService.Get (id);
if (product != null)
запрос на возврат.CreateResponse(HttpStatusCode.Хорошо, продукт);
запрос на возврат.CreateErrorResponse(HttpStatusCode.NotFound, " данные не найдены для предоставленного идентификатора.");
}
// GET api / продукты
public HttpResponseMessage GetAll()
{
ВАР продукции = _productService.Способность();
если (продукты.Какой-нибудь())
запрос на возврат.CreateResponse(HttpStatusCode.Хорошо, продукты);
запрос на возврат.CreateErrorResponse(HttpStatusCode.Процесс, "нет данных.");
}
***********************************
Сервис код товара :


public string Get (строка i)
{
вернуться _sUnitOfwork.ProductDetails.Get (i);
}
общественного строка способность()
{
вернуться _sUnitOfwork.ProductDetails.Способность();
}
***********************************************************
Код Репозитория Продукта :

public string Get (строка i)
{
/// code здесь возвращает название продукта


возвращение Марка ;
}



/// & lt;резюме>
/// Получить все записи
///
/// & lt;возвращает>
общественного строка способность()
{
// код здесь

возвращает все списки продуктов
}
********************************

http://localhost:** / api/Products/iD, я использовал accept: application/xml, все еще не принимая XML и запрашивая окно для добавления имени пользователя и пароля , если я даю, что он возвращает значения , но не принимая имя пользователя и пароль из XML-запроса от fidler или Advanced rest client

1 Ответов

Рейтинг:
0

Atlapure Ambrish

Вы должны просто вернуть свой объект и не беспокоиться о том, является ли он XML или JSON. Клиент несет ответственность за запрос JSON или XML из веб-api.

Чтобы проверить это, я бы просто использовал Fiddlder и сделал запрос к веб-api, указав заголовок запроса (либо json, либо xml).

Accept: application/xml