问题描述
使用 post 方法开发了一个服务,其中我传递了另一个 POST 调用详细信息,例如 url、标题和数据体。使用这些参数和 javascript 进行后期调用并获取 html 响应,现在使用 phantonjs 想要将此 html 响应转换为 svg 并作为响应从 API 返回。
我已成功获得 html 响应,但无法将内容转换为 svg。到目前为止,我的代码如下所示..
-- POST API --
public HttpResponseMessage Post(PostRequest request)
{
//logger.info("Incoming request: " JsonConvert.SerializeObject(request));
string svgString = GetSVG(request);
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(svgString);
return new HttpResponseMessage()
{
Content = new StringContent(
Convert.ToBase64String(plainTextBytes),Encoding.UTF8,"text/plain"
)
};
}
private string GetSVG(PostRequest request)
{
var ops = new List<string>();
using (var phantomJS = new PhantomJS())
{
phantomJS.OutputReceived += (sender,e) =>
{
if (e.Data != null)
ops.Add(e.Data);
};
phantomJS.ErrorReceived += (sender,e) =>
{
if (e.Data != null)
ops.Add(e.Data);
};
try
{
string script = GetScript(request);
phantomJS.RunScript(script,null);
}
catch (Exception ex)
{
throw;
}
finally
{
phantomJS.Abort();
}
}
return ops.FirstOrDefault();
}
private string GetScript(PostRequest request)
{
StringBuilder script = new StringBuilder();
script.Append("var webPage = require('webpage');");
script.Append("var page = webPage.create();");
script.Append(@"var settings = {
operation: 'POST',encoding: 'utf8',headers: {
'Content-Type' : 'application/json' },");
script.Append(@"data: JSON.stringify({
val1: 'value1',val2: 'value2'})
};");
script.Append(@"page.open('"+request.url+@"',settings,function(status) {
console.log('Status: ' + status);
// How to get response and convert to svg and return...
});");
return script.ToString();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)