Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#net中使用siteminder令牌获取cognos报告_C#_Rest_Api_Cognos_Siteminder - Fatal编程技术网

如何在c#net中使用siteminder令牌获取cognos报告

如何在c#net中使用siteminder令牌获取cognos报告,c#,rest,api,cognos,siteminder,C#,Rest,Api,Cognos,Siteminder,我正在尝试使用siteminder令牌获取cognos报告,下面是我的代码 string cognosUrl = "https://cognos.blah.com"; string reportPath = "/c10/cgi-bin/cognosisapi.dll/rds/reportData/report/"; string reportId = "ildjfsldkf"; //prod cognosUrl += string.Concat(report

我正在尝试使用siteminder令牌获取cognos报告,下面是我的代码

string cognosUrl = "https://cognos.blah.com";

string reportPath = "/c10/cgi-bin/cognosisapi.dll/rds/reportData/report/";                   string reportId = "ildjfsldkf"; //prod
cognosUrl += string.Concat(reportPath, reportId,"?blahblah");
string targetUrl = cognosUrl;
string strFormvalues = string.Concat("TARGET=",targetUrl);
ASCIIEncoding encoder = new ASCIIEncoding();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetUrl);
byte[] data = encoder.GetBytes(strFormvalues);
request.AllowAutoRedirect = false;
request.Timeout = 120000;
request.ContentLength = data.Length;
request.ContentType = "text/xml;charset=\"utf-8\"";
request.Method = "POST";
request.Headers.Add(HttpRequestHeader.Cookie,"SMSESSION="+stoken);
request.GetRequestStream().Write(data, 0, data.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string json = reader.ReadToEnd();
byte[] byteArray = Encoding.UTF8.GetBytes(json);
MemoryStream restream = new MemoryStream(byteArray);
using (Stream output = File.OpenWrite(@"c:\\Projects\\Test_"+DateTime.Now.ToString("yyyyMMddHHmmssfff")+".txt"))
                using (Stream input = restream)
                {
                    if (input != null) input.CopyTo(output);
                }
                // var results = serializer.DeserializeObject(json);
                reader.Close();
                dataStream.Close();
                response.Close();
但我得到的回应是“DPR-ERR-2101您的请求无效。请与管理员联系。”

我自己并没有使用C,但在调试时有一些建议:

  • 如果您只是发布一个URL,为什么不使用GET而不是POST呢
  • 尝试在浏览器中粘贴targetURL,看看会发生什么
  • 在我的设置中,当我在浏览器中粘贴URL时,我总是在收到答复之前被重定向。(对于像/cgi-bin/cognosisapi.dll/rds/sessionOutput/conversationID/i292ED29A62474697AD44306A388F5BBB这样的URL,您正在阻止这种情况发生,这可能是一个问题)
希望有帮助