【发布时间】:2018-06-26 00:36:26
【问题描述】:
我正在尝试将来自 www.domain1.com 的 XML 发布到 www.domain2.com 中的控制器。
这是我的代码:
www.domain2.com
[HttpPost]
public ActionResult FetchProductsXML()
{
Response.ContentType = "text/xml";
StreamReader reader = new StreamReader(Request.InputStream);
String xmlData = reader.ReadToEnd();
var products = _productService.SearchProducts(showHidden: false);
var xml = _exportManager.ExportProductsToXml(products);
return this.Content(xml, "text/xml");
}
然后在 www.domain1.com 我发布如下..
private string getProductLIstXML()
{
ASCIIEncoding encoding = new ASCIIEncoding();
string SampleXml = "<testXml>test</testXml>";
try
{
byte[] data = encoding.GetBytes(SampleXml);
string url = "http://www.domain2.com/products-xml";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(SampleXml);
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
return responseStr;
}
return null;
}
catch (WebException webex)
{
return webex.ToString();
}
}
RouteProvider 类中我的自定义路由
routes.MapLocalizedRoute("FetchProductsXML",
"products-xml",
new { controller = "Product", action = "FetchProductsXML" },
new[] { "Nop.Web.Controllers" });
我得到的错误是
System.Net.WebException: The remote server returned an error: (404) Not Found.
at System.Net.HttpWebRequest.GetResponse()
我遵循了以下 SOQ 中的示例
【问题讨论】:
-
您可以发布 products-xml 端点的代码吗?那是它找不到的部分。
-
@VicF products-xml 用于 FetchProductsXML 操作。我的 RouteConfig 文件中有此设置。我不确定是否要设置端点?我以为这就是我需要做的一切?
-
尝试将
FetchProductsXML更改为HttpGet并查看是否可以访问api url。您的路由可能不正确。 -
@JohnEphraimTugado 我试过了,还是什么都没做:(
-
我已更新我的问题以包含自定义路线
标签: c# asp.net-mvc