У меня есть пример приложения, написанного на Delphi с использованием компонента SOAP / N Software.Это приложение связывается с сайтом GeoCoder (см. Geocoder.us), чтобы получить широту и долготу от предоставленного адреса.Работает нормально.
Написал очень простой клиент WCF, который делает то же самое, но не работает.Я использовал Fiddler2, чтобы увидеть, что происходит.
Приложение Delphi возвращает основной текст.Мое приложение WCF возвращает содержимое, сжатое gzip.Это должно быть по умолчанию, так как я не установил это.Когда ответ возвращается, средства для распаковки отсутствуют.
Я вижу много веб-страниц, подробно рассказывающих о настройке сжатия gzip, но ничего об этом не отключающих.
Вопрос в том, как можноЯ получаю свой клиент WCF, чтобы запросить с сайта GeoCoder ответ в виде простого текста (я знаю, что сжатие хорошо и т. Д.), Но в этом случае я просто хочу, чтобы это работало.1011 *http://rpc.geocoder.us/dist/eg/clients/GeoCoder.wsdl
Мой исходный код (он очень прост, когда я изучаю этот материал)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.ServiceModel;
using GeoCodeTest.ServiceReference1;
namespace GeoCodeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private GeocoderResult[] LocationResult = null;
private GeoCode_PortTypeClient proxy = null;
private void btnGo_Click(object sender, EventArgs e)
{
LocationResult = proxy.geocode(txtLocation.Text); // always returns a null !!!
geocoderResultBindingSource.DataSource = LocationResult;
}
private void Form1_Load(object sender, EventArgs e)
{
proxy = new GeoCode_PortTypeClient("GeoCode_Port");
}
}
}
Это сгенерированный файл app.config.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="GeoCode_Binding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://rpc.geocoder.us/service/soap/" binding="basicHttpBinding"
bindingConfiguration="GeoCode_Binding" contract="ServiceReference1.GeoCode_PortType"
name="GeoCode_Port" />
</client>
</system.serviceModel>
</configuration>
Есть ли что-то, что я могу добавить / удалить / изменить в app.config, чтобы запрос клиента WCF запрашивал простой текст, такой как приложение Delphi?