Мне нужно позвонить в службу WCF REST с несколькими параметрами с помощью метода POST, но я не могу создать DataContract, содержащий мои параметры, потому что мне нужны простые типы: мой веб-сервис будет использоваться объективное приложение C.Использование службы WCF REST с несколькими параметрами БЕЗ DataContract
Я нашел этот синтаксис на сайте MSDN:
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "savejson?id={id}&fichier={fichier}")]
bool SaveJSONData(string id, string fichier);
Чтобы объяснить быстро контекст, я должен вызвать этот метод, чтобы спасти JSON-файл с Id передается в базу данных.
Мой вопрос: действительно ли возможно передать несколько параметров методу POST, как показано выше?
Во-вторых: как я могу сделать, чтобы использовать мой сервис (на данный момент, чтобы проверить его) с несколькими параметрами?
Я уже протестирована с DataContract, и я делал так:
string url = "http://localhost:62240/iECVService.svc/savejson";
WebClient webClient = new WebClient();
webClient.Headers["Content-type"] = "application/json; charset=utf-8";
RequestData reqData = new RequestData { IdFichier = "15", Fichier = System.IO.File.ReadAllText(@"C:\Dev\iECV\iECVMvcApplication\Content\fichier.json") };
MemoryStream requestMs = new MemoryStream();
DataContractJsonSerializer requestSerializer = new DataContractJsonSerializer(typeof(RequestData));
requestSerializer.WriteObject(requestMs, reqData);
byte[] responseData = webClient.UploadData(url, "POST", requestMs.ToArray());
MemoryStream responseMs = new MemoryStream(responseData);
DataContractJsonSerializer responseSerializer = new DataContractJsonSerializer(typeof(ResponseData));
ResponseData resData = responseSerializer.ReadObject(responseMs) as ResponseData;
RequestData и ResponseData были объявлены так:
[DataContract(Namespace = "")]
public class RequestData
{
[DataMember]
public string IdFichier { get; set; }
[DataMember]
public string Fichier { get; set; }
}
[DataContract]
public class ResponseData
{
[DataMember]
public bool Succes { get; set; }
}
Но, как я уже сказал, я не могу сделайте это вот так ...
Надеюсь, я достаточно ясен, если нет, не стесняйтесь спрашивать подробности!
Большое спасибо за помощь.
Использование контракта с данными не требует ничего особенного клиента. Что особенного в вашем клиенте ObjC, что отличает вашу ситуацию? –