Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

1 Nisan 2015 Çarşamba

Fiddler ile WCF servisini çağırmak

WSDL'ı parça parça aşağıdan okuyalım.

Çağıracağımız fonksiyonda iki farklı tipte iki parametre var QueryInboxInvoiceStatus(InvoiceLogin _invoiceLogin, string[] _invoiceIds)
İşte fonksiyonumuzun WSDL'daki ifadesi:
<xs:element name="QueryInboxInvoiceStatus">
 <xs:complexType>
  <xs:sequence>
   <xs:element xmlns:q29="http://schemas.datacontract.org/2004/07/FMC.Turkiye.Lib.EInvoice" minOccurs="0" name="_invoiceLogin" nillable="true" type="q29:InvoiceLogin"/>
   <xs:element xmlns:q30="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="_invoiceIds" nillable="true" type="q30:ArrayOfstring"/>
  </xs:sequence>
 </xs:complexType>
</xs:element>

_invoiceIds parametremiz string tipinde bir dizi. Bunda dikkat edeceğimiz husus xml namespace bilgisinin doğru yazılması. Karmaşık bir tip(complex type) olmadığı için detayı yok ama InvoiceLogin için var:
<xs:complexType name="InvoiceLogin">
 <xs:sequence>
  <xs:element minOccurs="0" name="Password" nillable="true" type="xs:string"/>
  <xs:element minOccurs="0" name="UserName" nillable="true" type="xs:string"/>
 </xs:sequence>
</xs:complexType>
2 tane string tipinde özelliği olan bir sınıf. Şuna benziyor olsa gerek:
class InvoiceLogin
{
  public string UserName;
  public string Password;
}
Şimdi xml namespace bilgileri fiddler ile talebimizi yaparken nasıl yer alıyor:


O halde bu web servis metodunu çağırdığımak için aşağıdaki http gövdesini kullanacağız:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body>
  <QueryInboxInvoiceStatus xmlns="http://gib.fresenius.com.tr/FEFatura">
   <_invoiceLogin xmlns:a="http://schemas.datacontract.org/2004/07/FMC.Turkiye.Lib.EInvoice" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <a:Password>şifremiz</a:Password>
    <a:UserName>kullanıcıAdı</a:UserName>
   </_invoiceLogin>
   <_invoiceIds  xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <b:string>353d5faf-f227-4600-8efe-3fb5ab0f1f48</b:string>
   </_invoiceIds>
  </QueryInboxInvoiceStatus>
 </s:Body>
</s:Envelope>

Bu da fiddler üstünden çağırmak için kullanacağımız http talebi ve cevabı:
POST http://localhost:53644/FEInvoice.svc HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPoxWgzmMUISZHhT9DgBmdvzAAAAAAA/+at96K6Uq35zPRjKxBIsVGn2pZnrlOgakzi+yKWdsACQAA
SOAPAction: "http://gib.fresenius.com.tr/FEFatura/IFEInvoice/QueryInboxInvoiceStatus" 
Host: localhost:53644
Content-Length: 677
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body>
  <QueryInboxInvoiceStatus xmlns="http://gib.fresenius.com.tr/FEFatura">
   <_invoiceLogin xmlns:a="http://schemas.datacontract.org/2004/07/FMC.Turkiye.Lib.EInvoice" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <a:Password>şifremizBudur</a:Password>
    <a:UserName>kullaniciAdimizBuOlsun</a:UserName>
   </_invoiceLogin>
   <_invoiceIds  xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <b:string>353d5faf-f227-4600-8efe-3fb5ab0f1f48</b:string>
   </_invoiceIds>
  </QueryInboxInvoiceStatus>
 </s:Body>
</s:Envelope>

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-SourceFiles: =?UTF-8?B?QzpcUHJvamVsZXJcRk1DLlR1cmtpeWUuV2NmLkVGYXR1cmFcdHJ1bmtcRkVJbnZvaWNlLnN2Yw==?=
X-Powered-By: ASP.NET
Date: Wed, 01 Apr 2015 10:07:45 GMT
Content-Length: 929

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body>
  <QueryInboxInvoiceStatusResponse xmlns="http://gib.fresenius.com.tr/FEFatura">
   <QueryInboxInvoiceStatusResult xmlns:a="http://schemas.datacontract.org/2004/07/FMC.Turkiye.Lib.EInvoice" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <a:Nesne i:nil="true"/>
    <a:hasError>false</a:hasError>
    <a:invoiceResult i:nil="true"/>
    <a:islem>QueryInboxInvoiceStatus Metodu</a:islem>
    <a:istisna i:nil="true"/>
    <a:lstWsResult>
     <a:WSResult>
      <a:Nesne i:nil="true"/>
      <a:hasError>false</a:hasError>
      <a:invoiceResult i:nil="true"/>
      <a:islem>QueryInboxInvoiceStatus Metodu</a:islem>
      <a:istisna i:nil="true"/>
      <a:lstWsResult/>
      <a:sonuc i:nil="true"/>
      <a:succeedTransaction>true</a:succeedTransaction>
     </a:WSResult>
    </a:lstWsResult>
    <a:sonuc i:nil="true"/>
    <a:succeedTransaction>false</a:succeedTransaction>
   </QueryInboxInvoiceStatusResult>
  </QueryInboxInvoiceStatusResponse>
 </s:Body>
</s:Envelope>

Uyumsoft WCF Servisine Talep

Şimdi bu talebi uyumsoft'un e-fatura servislerine nasıl yapabiliriz bakalım ve bilgimizi ikinci bir örnek ile ilerletelimki anlayışımız artsın.
Önce metodumuzu wsdl içinde bulalım:
soapAction servisi çağırırken hangi metodu çağıracağı bilgisini içeriyor.

input ile metoda verilecek parametreleri, output ile çıktı olarak üreteceği sonucu görüyorsunuz.

Peki parametrenin veri tipi ne?
ArrayOfString tipi olacak.

Şimdi talebimizi yapalım:
POST https://efatura.uyumsoft.com.tr/Services/Integration HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/IIntegration/QueryInboxInvoiceStatus"
Host: efatura.uyumsoft.com.tr
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Length: 937


 
  
   
    kullaniciAdimiz
    şifremiz
   
  
 
 
  
   
    353d5faf-f227-4600-8efe-3fb5ab0f1f48
   
  
 

Ve cevabımız:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
Set-Cookie: ASP.NET_SessionId=giq1anjro5kiajmwxzar1t11; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 01 Apr 2015 11:26:03 GMT
Content-Length: 845


 
  
   
    2015-04-01T11:26:04.353Z
    2015-04-01T11:31:04.353Z
   
  
 
 
  
   
    
   
  
 

Kolay gelsin....