2015-02-08 89 views
1

我试图发送一个POST到Smarty Streets API,但是我得到的响应是一个格式错误的负载。我浏览了网站上的文档,我想我已经准确地发送了一切。我甚至用小提琴看我发送的东西,它看起来是正确的,但肯定有一些我错过了。我是相对较新的编程。所以任何帮助,将不胜感激。C#Smarty Streets POST请求

string url = Uri.EscapeUriString("http://api.smartystreets.com/street-address?auth-id=Id&auth-token=token"); 
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 

TestAddress json = new TestAddress(); 

json.street = "11 Phelan Ave, San Francisco, CA"; 

string jsoncvt = JsonConvert.SerializeObject(json); 
byte[] byteArray = Encoding.UTF8.GetBytes(jsoncvt); 
httpWebRequest.ContentLength = byteArray.Length; 
httpWebRequest.Host = "api.smartystreets.com"; 
httpWebRequest.ContentType = "application/json"; 
httpWebRequest.Accept= "application/json"; 
httpWebRequest.Method = "POST"; 
Stream dataStream = httpWebRequest.GetRequestStream(); 
dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
+2

这可能是这里的问题是,API需要一个*阵列的*街头输入(如果您使用的是JSON有效载荷),而该请求仅发送一个单一的对象。 – 2015-03-19 20:50:53

回答

0

正如Jonathan Oliver评论的那样,SmartyStreets API期望收集输入候选集合。只需修改序列化的有效载荷是一个集合:

string jsoncvt = JsonConvert.SerializeObject(new TestAddress[] {json});