Я пытаюсь написать программу на C # для интеграции моих дел Appian с внешней системой управления записями электронных документов (EDRMS).
Программа должна загрузить документы, которые были загружены для каждого случая в Appianа затем убедитесь, что они загружены в EDRMS с помощью веб-сервисов.
Я написал Appian Web-api, который я могу использовать для входа и получения списка документов для каждого случая, поэтому язнать, где в EDRMS мне нужно поместить документы.
Документы доступны [с помощью веб-браузера] с таким URL-адресом: https://myappiansite.appiancloud.com/suite/doc/123456
Если я перехожу по этому URL-адресуиспользуя мой веб-браузер, он сразу же загружает файл.
Однако, если я пытаюсь подключиться к этому URL-адресу программно из моей программы на C #, то, что я получаю, когда я [пытаюсь] открыть поток файла, этонекоторый HTML-код целевой страницы по умолчанию, а не содержимое документа.
Код, который я пишу, выглядит следующим образом:
HttpWebRequest MyRequest = (HttpWebRequest)WebRequest.Create("https://myappiansite.appiancloud.com/suite/doc/123456?signin=native");
MyRequest.Timeout = 10000; // 10 seconds
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new System.Uri("https://myappiansite.appiancloud.com/suite/doc/123456?signin=native"),
"Basic",
new NetworkCredential("myAppianUsername",
"myAppainPassword"));
MyRequest.Credentials = credentialCache;
MyRequest.PreAuthenticate = true;
// Get the web response
HttpWebResponse MyResponse = (HttpWebResponse)MyRequest.GetResponse();
if (HttpStatusCode.OK == MyResponse.StatusCode)
{
int chunkSize = 524288;
using (FileStream fs = new FileStream("C:\temp\myNewFile.doc", FileMode.Create))
{
using (Stream MyResponseStream = MyResponse.GetResponseStream())
{
BinaryReader br = new BinaryReader(MyResponseStream);
byte[] data;
Boolean lastChunk = false;
do
{
data = br.ReadBytes(chunkSize);
if (data == null || data.Length == 0 || data.Length < chunkSize)
{
lastChunk = true;
}
if (data != null)
{
fs.Write(data, 0, data.Length);
}
}
while (!lastChunk);
br.Close();
}//using MyResponseStream
} // Using fs
}
Но когда этот код hПри запуске документ «C: \ temp \ myNewFile.doc» просто содержит HTML-код нашей главной целевой страницы.
Любые мысли о том, почему при просмотре https://myappiansite.appiancloud.com/suite/doc/123456 будет загружен документ, но кодвыше просто получает HTML-код целевой страницы?
[Обратите внимание, что пользователь "myAppianUsername" является пользователем, не являющимся пользователем saml, тогда как обычно вход в систему осуществляется с использованием учетной записи, подключенной к AD через SAML. Если я удаляю «? Signin = native» из URL, то загружаемый файл содержит HTML-код для входа в SAML]
спасибо,
David.