Eğer ki .NET ile uğraşıyorsanız ve java soap web servise erişmeye çalışırken aşağıdaki hatayı alıyorsanız (framework 3.5, Visual Studio 2008)
The request was aborded: The request was cancelled.
1. .NET ile uğraşmayın. Çok daha düzgün bir platforma geçin, Java gibi.
2. Visual Studio’nun oluşturduğu ama size göstermediği (salaksınız ya o kodu görmemeniz gerekiyor) kodları açıp, System.Web.Services.Protocols.SoapHttpClientProtocol sınıfından türeyen base servisinize aşağıdaki metodu ekleyin:
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest) base.GetWebRequest(uri);
webRequest.KeepAlive = false; // dananın kuyruğunun koptuğu an
return (System.Net.WebRequest) webRequest;
}
allah sabır versin…
Bu arada, şöyle bi salaklığa daha rastladım, C# ile bir web servis istemcisi yazarken (.net 3.5) hangi alanların doldurulduğunu anlamak için o alan ismi ile “Specified” diye boolean alanlar açıyor. Misal ucret diye bir property varsa ucretSpecified diye bir property daha ekliyo istemcimiz, siz ucret parametresini istediğiniz kadar doldurun, bu ucretSpecified = true demediğiniz sürece soap mesajına bu parametreyi eklemiyor. Eklemediği için karşı tarafa null olarak gidiyor, siz de uraşıp duruyosunuz ne oluyor ne bitiyor diye. Düzgün çalışabilmesi için 20 parametreniz varsa istemci bunu 40 parametre yapıyor, siz de 20 tane = true yazıyosunuz. Yuh artık bu kadar da saçma kod yazılmaz ki…
