我正在嘗試構建一個GET web服務,它將從網站1發起一個GET請求...將該請求發送到網站2,網站2將通過發送對象列表進行響應。我使用Json.net序列化和反序列化對象列表。MVC 3 GET Webservice和Response
我已經把一個POST Web服務這個問題的幫助.. WebService ASP.NET MVC 3 Send and Receive
但我一直不成功迄今爲止在適應我的新的要求,即例子。
以下是我從網站1到目前爲止..
public static List<ScientificFocusArea> ScientificFocusAreas()
{
string apiURL = "http://localhost:50328/Api/GetAPI";
//Make the post
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
//var bytes = Encoding.Default.GetBytes(body);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiURL);
Stream stream = null;
try
{
request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded";
request.Timeout = -1;
request.Method = "GET";
}
finally
{
if (stream != null)
{
stream.Flush();
stream.Close();
}
}
List<ScientificFocusArea> listSFA = WebService.GetResponse_ScientificFocusArea(request);
return listSFA;
}
public static List<ScientificFocusArea> GetResponse_ScientificFocusArea(HttpWebRequest request)
{
List<ScientificFocusArea> listSFA = new List<ScientificFocusArea>();
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)
{
throw new HttpException((int)response.StatusCode, response.StatusDescription);
}
var end = string.Empty;
using (StreamReader reader = new StreamReader(responseStream))
{
end = reader.ReadToEnd();
reader.Close();
listSFA = JsonConvert.DeserializeObject<List<ScientificFocusArea>>(end);
}
response.Close();
}
}
return listSFA;
}
然後網站2 ...
public class GetAPIController : Controller
{
//
// GET: /Api/GetAPI/
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetScientificFocusAreas()
{
//Get list of SFAs
List<ScientificFocusArea> ListSFA = CreateList.ScientificFocusArea();
string json = JsonConvert.SerializeObject(ListSFA, Formatting.Indented);
//Send the the seralized object.
return Json(json);
}
}
此外,在網站2,我已經註冊了這個路線對於傳入的請求...
context.MapRoute(
"GetScientificFocusAreas",
"Api/GetAPI/",
new
{
controller = "GetAPI",
action = "GetScientificFocusAreas",
id = UrlParameter.Optional
}
);
我目前正在收到錯誤..他遠程服務器返回錯誤:(404)未找到。
任何幫助,我將不勝感激。
我想實現你的建議,並在這一行上有一個錯誤... serializer.Binder = new DefaultSerializationBinder();我是否缺少命名空間或類?使用System; using System.Collections.Generic; using System.Web;使用System.Web.Routing的 ; using System.Web.Mvc;使用System.IO的 ;使用System.Collections的 ;使用System.Net的 ; 使用System.Text; 使用Newtonsoft.Json; – 2012-07-26 13:27:29
忽略我最後的評論查克,我能夠得到它的工作。 serializer.Binder = new DefaultSerializationBinder(); – 2012-07-26 15:16:13
非常感謝您的幫助Chuck! – 2012-07-26 15:17:13