【发布时间】:2015-06-07 09:19:30
【问题描述】:
简介
我正在尝试将 Europass Webservice 与我目前正在开发的网站集成。
此 WebService 允许您通过 XML 或 JSON 文件获取 PDF 或 Word CV。
他们提供与他们的 WS 通信的信息和一个示例 XML (here),但您可以自己做,因为您尊重他们的架构。
为确保 xml 可以正常使用,请使用远程上传服务,并在他们的网站上查看您的 XML 生成的简历。
我正在使用 REST 服务,更具体地说是 XML 到 PDF CV
我的怀疑
我的问题是我可以与 Web 服务进行通信,并且我也得到了 OK 响应(太棒了!),但是下载 PDF 时它是空白的。
我在这里错过了什么?你们能指导我吗?
要重现此问题,请复制以下代码并将此 xml 的内容添加到 xmlcontent 路径中的文件中。
代码
//POST
string xmlContent = File.ReadAllText("D:\\Documents\\CV.xml");
string URL = "https://europass.cedefop.europa.eu/rest/v1/document/to/pdf-cv";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "application/xml";
using (Stream webStream = request.GetRequestStream())
using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.UTF8))
{
requestWriter.Write(xmlContent);
}
//RESPONSE
try
{
WebResponse webResponse = request.GetResponse();
using (Stream webStream = webResponse.GetResponseStream())
{
if (webStream != null)
{
using (StreamReader responseReader = new StreamReader(webStream))
{
string response = responseReader.ReadToEnd();
byte[] byteResponse = Encoding.UTF8.GetBytes (response);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=test.pdf"); // Save file
Response.AddHeader("Content-Length", byteResponse.Length.ToString());
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite(byteResponse);
Response.End();
}
}
}
【问题讨论】:
-
什么是“响应”对象?不要在任何地方看到它的定义。
-
我认为您在这里错过的是(来自网站):“在一个名为 europass-xml 的参数中。”您正在传递一个有效的 XML,只是不在预期的容器中。这就是为什么他们使用名为 europass-xml 的文本区域将 xml 直接发布到他们的网站。
-
您好@JunaidKirkire,响应对象与页面对象相关联。此对象允许您向客户端发送 HTTP 响应数据并包含有关该响应的信息。 link。我正在使用 ASP.NET 4.5 框架
-
@LocEngineer 但如果出现问题,我怎么能收到 OK 响应?欢呼
-
您发送了正确的回复。但是当他们查询容器“europass-xml”时,它是空的 => 因此你会收到一个空的 pdf。
标签: c# asp.net xml web-services