У меня проблема с неверными SOAP ответами от моего провайдера API. Сервер отвечает неверными данными в соответствии с WSDL. Я хочу отключить проверку, потому что мне нужны только два значения, которые, я уверен, всегда верны.
Мой запрос:
public string _login = "test";
public string _key = "asdf";
private async Task<getMenuResponseType> GetMenuItems() {
var binding = new BasicHttpBinding {
MaxReceivedMessageSize = 200000
};
var address = new EndpointAddress("http://example.com/api/soap");
using (var client = new ApiMenuPortTypeClient(binding, address)) {
var request = new getMenuRequestType {
authenticate = new authenticateType {
system_login = _login,
system_key = _key,
},
@params = new getMenuParamsType() {
shop_idSpecified = true,
menu_idSpecified = true,
shop_id = 2,
menu_id = 1,
lang_id = "eng"
},
settings = new settingsType {
textid_separator = " > "
}
};
var results = await client.getMenuAsync(request);
return results;
}
}
Когда он достигает var results = await client.getMenuAsync(request);
, я получаю это исключение (грубо переведено):
System.ServiceModel.CommunicationException: An error occurred during deserialization for operation "getMenu". ---> System.InvalidOperationException: There is an error in XML document (2, 9408). ---> System.InvalidOperationException: Validation error: '' is not a valid entry for type viewType.
Итак, согласно WSDL, viewType
- это перечисление, которое выглядит следующим образом (генерируется Visual Studio):
public enum viewType {
normal,
list,
gallery
}
Не может быть нулевым. Об этой проблеме было сообщено поставщику API, но, если возможно, я бы предпочел пропустить ожидание, тем более что я не использую типы, вызывающие проблемы.