2013-02-21 40 views
14

के साथ फिडलर से कॉल किया गया है तो मेरे पास कुछ विरासत डेटाबेस कोड पर एक बहुत ही सरल वेब एपीआई 4 नियंत्रक है। इस तरह की तरह इकाई:पोस्ट वेब एपीआई 4 पैरामीटर के लिए पैरामीटर जब JSON बॉडी

public class Employee 
{ 
    public string EmploymentStatus { get; set; } 
    public string CompanyCode { get; set; } 
    public string Division { get; set; } 
    public string OrgLevel1Code { get; set; } 
    public string OrgLevel2Code { get; set; } 
    public string OrgLevel3 { get; set; } 
    public string StoreName { get; set; } 
    public string EmployeeNumber { get; set; } 
    public string EmployeeFirstName { get; set; } 
    public string EmployeeMiddleInitial { get; set; } 
    public string EmployeeLastName { get; set; } 
    public string EmailAddress { get; set; } 
    public string JobCode { get; set; } 
    public string DateInJob { get; set; } 
    public string OriginalHire { get; set; } 
} 

विधि इस प्रकार है:

public HttpResponseMessage PostEmployee(Employee item) 
    { 
     DataHelpers.AddUser(item.CompanyCode, item.Division, item.OrgLevel1Code, item.OrgLevel2Code, item.OrgLevel3, item.EmployeeFirstName, item.EmployeeMiddleInitial, item.EmployeeLastName, item.EmailAddress, item.JobCode, item.OriginalHire); 
     var response = Request.CreateResponse<Employee>(HttpStatusCode.Created, item); 
     string uri = Url.Link("DefaultApi", new { id = item.EmployeeNumber }); 
     response.Headers.Location = new Uri(uri); 
     return response; 
    } 

जब मैं इस तरह फ़िडलर के माध्यम से पोस्ट:

POST /api/identity HTTP/1.1 
User-Agent: Fiddler 
Host: localhost:1421 
Content-Length: 382 
contentType: "application/json; charset=utf-8" 
dataType: 'json' 

{ 
"employmentStatus":"zzz", 
"companyCode":"Titlemax", 
"division":"bbb", 
"orgLevel1Code":"ccc", 
"orgLevel2Code":"ddd", 
"orgLevel3":"eee", 
"storeName":"fff", 
"employeeNumber":"12343", 
"employeeFirstName":"Bill", 
"employeeMiddleInitial":"A", 
"employeeLastName":"sempf", 
"emailAddress":"[email protected]", 
"jobCode":"GM", 
"dateInJob":"8/7/2005", 
"originalHire":"8/7/2005" 
} 

मैं नेट और से एक अपवाद मिल आइटम पैरामीटर शून्य है।

{"Message":"An error has occurred.","ExceptionMessage":"Object reference not set to an instance of an object.","ExceptionType":"System.NullReferenceException"} 

मुझे क्या याद आ रही है? मैं वेब एपीआई में नया हूं। अग्रिम में धन्यवाद।

+0

आप अपने विधि 'PostEmployee' में डिबग सकता है देखने के लिए जो कोड लाइन इस अपवाद फेंक? –

+1

आइटम पैरामीटर शून्य है। तो जब मैं इसका संदर्भ देता हूं तो अपवाद होता है। –

उत्तर

29

मुझे लगता है कि यह फिडलर में अनुरोध प्रारूप है। संगीतकार टैब से Content-Type हैडर

से बोलियां निकालने का प्रयास करें:

POST http://localhost:1421/api/identity HTTP/1.1 

अनुरोध हेडर:

User-Agent: Fiddler 
Host: localhost:1421 
Content-Type: application/json; charset=utf-8 

अनुरोध बॉडी:

{ 
    "employmentStatus":"zzz", 
    "companyCode":"Titlemax", 
    "division":"bbb", 
    "orgLevel1Code":"ccc", 
    "orgLevel2Code":"ddd", 
    "orgLevel3":"eee", 
    "storeName":"fff", 
    "employeeNumber":"12343", 
    "employeeFirstName":"Bill", 
    "employeeMiddleInitial":"A", 
    "employeeLastName":"sempf", 
    "emailAddress":"[email protected]", 
    "jobCode":"GM", 
    "dateInJob":"8/7/2005", 
    "originalHire":"8/7/2005" 
} 

प्रतिक्रिया:

HTTP/1.1 201 Created 
Cache-Control: no-cache 
Pragma: no-cache 
Content-Type: application/json; charset=utf-8 
Expires: -1 
Location: http://localhost:1421/api/identity/12343 
Server: Microsoft-IIS/8.0 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcY2FsdmlfMDAwXGRvY3VtZW50c1x2aXN1YWwgc3R1ZGlvIDIwMTJcUHJvamVjdHNcTXZjQXBwbGljYXRpb24yXE12Y0FwcGxpY2F0aW9uMlxhcGlcaWRlbnRpdHk=?= 
X-Powered-By: ASP.NET 
Date: Thu, 21 Feb 2013 03:53:04 GMT 
Content-Length: 351 

{"EmploymentStatus":"zzz","CompanyCode":"Titlemax","Division":"bbb","OrgLevel1Code":"ccc","OrgLevel2Code":"ddd","OrgLevel3":"eee","StoreName":"fff","EmployeeNumber":"12343","EmployeeFirstName":"Bill","EmployeeMiddleInitial":"A","EmployeeLastName":"sempf","EmailAddress":"[email protected]","JobCode":"GM","DateInJob":"8/7/2005","OriginalHire":"8/7/2005"} 
+4

यहां बच्चों को सुनो - यह एक चेतावनीपूर्ण कहानी है कि जब आप बूढ़े हो जाते हैं तो आप 16 घंटे के दिनों के लिए काम नहीं कर सकते हैं। धन्यवाद, कैल्विन - यह बिल्कुल है। मेरे हेडर में प्रयुक्त जावास्क्रिप्ट कोड। आपको हरा चेक मिलता है क्योंकि आपने पीओसी किया था। –

3

आपका Fiddler अनुरोध हेडर कुछ इस तरह होना चाहिए:

सामग्री प्रकार: आवेदन/json

+0

और बस पूरी तरह स्पष्ट होने के लिए - फ़िडरर कंपोज़ डायलॉग के ऊपरी हिस्से में शीर्षलेख दिखाई देता है, ठीक उसी प्रकार "उपयोगकर्ता-एजेंट" और "सामग्री-लंबाई" शीर्षलेख के अंतर्गत जो फिडलर स्वचालित रूप से जोड़ता है। रचना संवाद के निचले हिस्से में शरीर JSON शरीर के "{" से शुरू होना चाहिए। यह शायद अधिक अनुभवी फिडलर उपयोगकर्ताओं के लिए स्पष्ट है लेकिन इसे सही करने के लिए मुझे दो बार लिया गया। –