Мы получаем сообщение от вызова WCF в виде данных GZip, но код ожидает XML.
Я работаю над КПК, который взаимодействует с веб-службой WCF.Ответом службы является формат SOAP, сжатый с помощью gzip.
Поскольку мы работаем в CF3.5, нам необходимо сгенерировать прокси клиента службы с помощью служебной программы NetCFSvcUtil.exe.
Это часть сгенерированного кода в CFClientBase, в которой возникает ошибка.
Private Function getReply(ByVal msg As System.ServiceModel.Channels.Message) As System.ServiceModel.Channels.Message
If (Me.RequestChannelFactory Is Nothing) Then
'transport doesn't support requests
Throw New System.NotSupportedException
End If
Dim requestChannel As System.ServiceModel.Channels.IRequestChannel
System.Threading.Monitor.Enter(Me.RequestChannelFactory)
Try
requestChannel = Me.RequestChannelFactory.CreateChannel(Me.remoteAddress)
Finally
System.Threading.Monitor.Exit(Me.RequestChannelFactory)
End Try
requestChannel.Open
Try
Return requestChannel.Request(msg)
Finally
If (requestChannel.State = System.ServiceModel.CommunicationState.Opened) Then
requestChannel.Close
End If
End Try
End Function
В строке requestChannel.Request (msg) ответ отправляется в формате gzipped, но выдает исключение, поскольку ожидает xml.
Это сбрасывается сообщением: «Существует проблема с XML, который был получен из сети. Дополнительные подробности см. Во внутреннем исключении.»
Внутреннее исключение: «», шестнадцатеричное значение 0x1F, является недопустимым символом. Строка 1, позиция 1. "
У меня закончились идеи по этому поводу, любая помощь / совет будет очень кстати.
ОБНОВЛЕНИЕ:
Iперестал пытаться сделать это таким образом - закончилось время.
В конце я изменил свои привязки на basicHTTPBinding, добавил веб-ссылку через Visual Studio, а затем сделал это так, как предложил Гото.Попытка сделать что-то помимо самых простых вещей между WCF и компактной структурой - такая боль.