Хорошо, вот что я имею, и я, вероятно, делаю это совершенно неправильно, но мне нужно какое-то другое направление, чем то, что я нахожу в Интернете.C# Войти на неинтерактивный веб-сайт и передать XML по адресу
Я пытаюсь передать URL-адрес, содержащий информацию для входа, а затем передать другой URL-адрес в том же соединении, что и мой XML. Вот и все, и я не могу заставить это работать. Пожалуйста помоги!!
Вот мой код.
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Xml;
using System.Net;
using System.IO;
using System.Configuration;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;
using System.ComponentModel;
using System.Collections.Specialized;
namespace DataIntegration.DataSender
{
class RaveDataSender
{
static void Main(string[] args)
{
System.Uri myUri = new System.Uri(@"https://api.myloginpage.com/edc_studyservices.jsp?action=importfile&filecontents=<?xml version='1.0'?><dataprocessitems><item>someitem</item></dataprocessitems>&filename=1.xml");
System.Uri loginUri = new System.Uri(@"https://api.myloginpage.com/login.jsp?studyid=something&action=login&login=myLoginName&password=myPassword");
byte[] mybytes = Encoding.ASCII.GetBytes("https://api.myloginpage.com/edc_studyservices.jsp?action=importfile&filecontents=<?xml version='1.0'?><dataprocessitems><item>someitem</item></dataprocessitems>&filename=1.xml");
byte[] loginbytes = Encoding.ASCII.GetBytes(@"https://api.myloginpage.com/login.jsp?studyid=something&action=login&login=myLoginName&password=myPassword");
CookieAwareWebClient client = new CookieAwareWebClient();
client.UploadDataAsync(loginUri, loginbytes);
client.UploadDataAsync(myUri, mybytes);
client.Dispose();
}
public class CookieAwareWebClient : WebClient
{
private CookieContainer cookie = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = cookie;
}
return request;
}
}
}
}
EDIT это то, что я закончил делать.
using (var client = new CookieAwareWebClient())
{
byte[] authresp = client.UploadData(loginUri, loginbytes);
byte[] dataRespose = client.UploadData(xmlUri, reqbytes);
string authResult = System.Text.Encoding.UTF8.GetString(authresp);
string result = System.Text.Encoding.UTF8.GetString(dataRespose);
client.Dispose();
}
поэтому вопрос стороны здесь, вы передаете имена пользователей и пароль в ясном тексте ..? wow я бы этого не делал .. если у вас есть веб-приложение, у которого есть страница входа в систему, обрабатывайте переадресацию оттуда, как только вы проверяете, не храните этот тип информации в URL-адресе – MethodMan
Спасибо, что заметили это. Очевидно, что значения здесь не являются реальными. К счастью, это спецификация, которая была дана и как мне было поручено справиться с этой интеграцией. Но да, вы здесь проповедуете хор. – John
Вау, это нехороший подход. Возможно, они не знают, что делать это таким образом, чтобы показать себя ... – MethodMan