2011-12-01 33 views
5

Ben şu anda sadece parça numarası a123456789'dur ve o zaman bir model numarası döndürürse bakar, bu basit web hizmeti var. Bu, partnoyu karşı kontrol etmek ve daha sonra gerçek model numarasını döndürmek için bir veritabanına bağlanacak olan mantıkla değiştirilecektir. Ama bu noktada sadece bazı kukla JSON verilerini geri vermem gerekiyor. Ben Fiddler'ı kullanmak ve http://localhost:PORT/Scan/Model/A123456789 web broswer konmuş görüşme baktığınızda Ancak budinlendirici web hizmeti dönen XML değil JSON

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Model: CVS-1679</string> 

döndürür Ama aynı URI fiddler bir GET yaptığımda Sadece altında

"Model: CVS-1679" 

olsun metin görüntüleme sekmesi. Ben setup benim ResponseFormat varken

o (Fiddler'da tarayıcı ve metinde) XML iade ediliyor Neden

değil JSON JSON olunur?

Benim Kod:

[WebGet(UriTemplate = "Model/{partno}", ResponseFormat = WebMessageFormat.Json)] 
     public string Model(string partno) 
     { 
      if (partno == "A123456789") 
      { 
       string modelno = "CVS-1679"; 
       return "Model: " + modelno; 
      } 
      else 
      { 
       string modelno = "CVS-1601"; 
       return "Model: " + modelno; 
      } 
     } 
sizin olsun verilerin biçimine bakarsak bu Json iade ediliyor
+1

REST hizmetine istekte bulunurken Content-Type öğesini application/json olarak ayarladığınızdan emin olun. – Rajesh

cevap

5

ASP.NET webservice dönüş XML/SOAP mesajını verir, çünkü. Json dizgisini döndürmek istediğinizde, Web servisini [ScriptService] özniteliğiyle dekore etmeniz gerekir. Bu, IIS'ye bu hizmetin ASP.NET AJAX çağrıları tarafından kullanılacağını bildirir. Bu özellik System.Web.Extensions'ın bir parçasıdır.

Sen ScriptMethod özniteliği ile WebMethod dekorasyon web yöntemi tepki biçimini tanımlayabilirsiniz.

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

Ancak bunlar bile özniteliği tarafından webservice ve WebMethod dekorasyon sonra, yanıt yine XML formatında olabilir. Bu davranış, isteği yapan istemci, İstek Başlığı içerik türünü “application/json” olarak ayarlamazsa gerçekleşir.

dönmeden önce WebMethod gelen yöntem çağrısı

O webservice test etmek kemancı kullanımı oldukça kolaydır Fiddler kullanarak JavaScriptSerializer

Hata WebService kullanarak Json dizeye serialize. Aşağıdaki şekil, bir json dizesini döndüren bir Web servisinin nasıl aranacağına dair bir örnektir.İstek içerik türünün uygulama/json olarak ayarlandığını unutmayın. Webserivce tarafından beklenen parametreler İstek Gönderi bölümünde belirtilmiştir. enter image description here

İstek içerik türünün uygulama/json olarak ayarlandığını unutmayın.

4

...

key: value 

ya sizin durumda

string Model = "CVS-1679" 

Kabadayı görüntülediğinizde, ham MS dizisini bir MS uç noktasından diğerine aktarırsınız. Eğer arayan uçta geri NET uygulamasına nesne olsun, beklediğiniz değerle Modeli olarak adlandırılan bir değişken olsun böylece .NET framework serileştirme & De-serileştirme elemanları, tel üzerinden taşınması özen .

Eğer iç içe XML etiketleri bir sürü göreceksiniz bütün bir sınıfını göndermeye çalışıyorum ama kodunuzda nesne olsun, nesne hiyerarşisinde birinci sınıf vatandaş görürsünüz

.

tarayıcınızda görüntülenen nedeni tarayıcı nasıl bunu de-tefrika biliyorum ve bu yüzden sadece varsayılan olarak metin