使用 phantomjs 从后调用 html 响应中获取 svg

问题描述

使用 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 (将#修改为@)