C# HTTPPOST用JavaScript响应
我已经尝试了一些不同的方法来写这篇http文章,它总是用这篇文章底部的脚本来响应。我还用VBA编写了一些代码,这些代码发布到同一个URL,并且它会按照应该的方式响应。我的一个同事认为VBA代码可以工作,因为它使用的是启用JS的IE引擎。在C语言中,我还需要做些什么来让它工作吗C# HTTPPOST用JavaScript响应,c#,http-post,C#,Http Post,我已经尝试了一些不同的方法来写这篇http文章,它总是用这篇文章底部的脚本来响应。我还用VBA编写了一些代码,这些代码发布到同一个URL,并且它会按照应该的方式响应。我的一个同事认为VBA代码可以工作,因为它使用的是启用JS的IE引擎。在C语言中,我还需要做些什么来让它工作吗 private static string TransformCmodReport(string ReportPath, string ModelPath) { var request = (HttpWebRequ
private static string TransformCmodReport(string ReportPath, string ModelPath)
{
var request = (HttpWebRequest)WebRequest.Create("http://usflcmd1:80/RMSClient/RequestTypeAnalyze/AnalyzeRequest");
string postData = "REQUEST_TYPE=E" +
"&REPORT_HOST=usflcmd1" +
"&REPORT_PATH=" + ReportPath +
"&MODEL_PATHS=" + ModelPath +
"&DEFAULT_VIEW=XLS_TABLE" +
"&EXPORTTO=CSV";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.AllowAutoRedirect = true;
request.UseDefaultCredentials = true;
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
return responseString;
}
回应
窗口位置=
“/RMSClient/Login/LoginIndex?返回URL=%2rmsclient%2exportmode%2FTryExport%3FappId%3D1abfc958-2694-42b9-a006-49ca5b786e44”
编辑:下面是正在工作的VBA代码
Public Function GetReportData(ReportPath As String, ModelPath As String) As String
Dim strRequest As String
Dim http As New MSXML2.ServerXMLHTTP60
strRequest = "REQUEST_TYPE=E" & _
"&REPORT_HOST=usflcmd1" & _
"&REPORT_PATH=" & ReportPath & _
"&MODEL_PATHS=" & ModelPath & _
"&DEFAULT_VIEW=XLS_TABLE" & _
"&EXPORTTO=CSV"
'Open the connection
http.Open "POST", "http://usflcmd1:80/RMSClient/RequestTypeAnalyze/AnalyzeRequest", False
http.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
http.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
'Send the payload
http.send CStr(strRequest)
'Get the response/error
GetReportData = http.responseText
End Function
返回的JS告诉客户端它需要重定向到登录屏幕。如果这出现在浏览器中,它将自动重定向。您可能需要首先向LoginIndex请求/发布数据用户名/密码,然后使用为您的请求返回的cookies和标题,返回到另一个页面,这听起来就像我的同事建议的那样。我要试一试。谢谢