如何检索值/网址?

时间:2014-06-03 23:35:02

标签: c#

我提前道歉,因为我之前没有使用过visual studio,我在大多数情况下都使用了一个模板来创建下面的代码。但我真的需要一些帮助。

我正在尝试通过API使用visual studio从系统生成报告。下面的代码工作,并没有在调试时给我任何错误,但我需要找到一种方法来检索最终的reportURL变量(报告是使用下面的规范生成的,我应该收到一个URL来下载报告) 。我正在构建一个Windows应用程序。

我可以使用visual studio中的console.log或console.writeline吗?或者我可以将它输出到某种文本框吗? (同样,我正在构建一个Windows窗体而不是控制台应用程序)。任何人都可以帮我找出一些代码,我可以根据下面提供的内容检索URL吗? (如果可能的话请详细说明,因为我仍然习惯了该计划)。谢谢!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ReportsApplication2
{
using ServiceReference1;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        ReportExecutionServiceClient client = new ReportExecutionServiceClient();
        ReportSubmission submissionRequest = new ReportSubmission();
        ReportSubmissionResponse submissionResponse = new ReportSubmissionResponse();
        PollReportResponse pollResponse = new PollReportResponse();
        WebMediaReportRequest webRepReq = new WebMediaReportRequest();
        UserCredentials userCredentials = new UserCredentials();
        DateFilter dateFilter = new DateFilter();

        userCredentials.UserName = "xxxxx";
        userCredentials.Password = "xxxxx";
        submissionRequest.UserCredentials = userCredentials;
        submissionRequest.DeveloperToken = "xxxxxx";

        dateFilter.DateFilterType = DateFilterType.Total;
        dateFilter.RelativeDateRange = RelativeDateRange.LastMonth;
        webRepReq.Columns = new WebMediaReportColumn[2] { WebMediaReportColumn.MediaPlanName, WebMediaReportColumn.Impressions };

        List<WebMediaFilter> webRepFilterList = new List<WebMediaFilter>();
        WebMediaFilter webRepFilter = new WebMediaFilter();

        webRepFilter.Column =   WebMediaReportFilter.ClientGUID;
        webRepFilter.Values =    new string[1] {"xxxxxx"};
        webRepFilterList.Add(webRepFilter);

        webRepFilter = new WebMediaFilter();
        webRepFilter.Column = WebMediaReportFilter.BuyGUID;
        webRepFilter.Values = new string[1] { "xxxxxxxx" };
        webRepFilterList.Add(webRepFilter);

        webRepReq.ReportName = "test";
        webRepReq.Filters = webRepFilterList.ToArray();
        webRepReq.Format = FormatType.CSV;
        webRepReq.DateFilter = dateFilter;

        submissionRequest.ReportRequest = webRepReq;
        submissionResponse = client.SubmitReport(submissionRequest);

        string reportURL = string.Empty;
        do    { // Loop until report complete or failed

        PollReportRequest pollRequest = new PollReportRequest();
        pollRequest.DeveloperToken =     "xxxxxxx";
        pollRequest.UserCredentials =     userCredentials;
        pollRequest.ReportId =            submissionResponse.ReportId;


        pollResponse = client.PollReport(pollRequest);

        reportURL = pollResponse.Url;

         } while ((pollResponse.Status != ReportStatus.Failed) || ((pollResponse.Status != ReportStatus.Complete)));

    }//end

3 个答案:

答案 0 :(得分:2)

你实际上已经知道你需要什么。 Console.WriteLine方法会将您想要的任何内容写入控制台。

在Visual Studio中进行调试时,可以通过打开“输出”窗口来查看控制台窗口。您可以在View菜单中找到它

即使您正在编写WinForms应用程序,在调试时仍会写入“输出”窗口。它在调试时可以是一个有效的工具,但当然,当您实际发布应用程序时,该命令将毫无意义,因为您也没有可以写入的控制台。

答案 1 :(得分:1)

如果您使用的是Winforms,最简单的显示消息的方法是MessageBox.Show():

  MessageBox.Show(reportURL);

在您单击“确定”之前,它将阻止该程序。

http://msdn.microsoft.com/en-us/library/0x49kd7z(v=vs.110).aspx

如果要在开发期间输出调试信息,则Console.WriteLine()将起作用:

Console.WriteLine(reportURL);

它将显示在“输出”窗口中。如果您没有看到,请转到Visual Studio中的主菜单,然后选择查看 - &gt;在调试模式下输出。

Console.WriteLine()仅适用于Visual Studio中的Winforms应用程序;部署后,控制台窗口不显示,因此您需要通过GUI方法显示它。

如果需要在运行时输出,请将TextBox从工具箱拖到主窗体上,然后执行以下操作:

textBox.Text = reportURL;

如果您无法在主窗体上显示它,那么您可能想要创建自己的自定义消息对话框,其中包含一个TextBox并使用ShowDialog()

显示它

答案 2 :(得分:0)

最简单的解决方案是使用Console.WriteLine