2016-02-17 4 views
0

Хорошо, вот что я имею, и я, вероятно, делаю это совершенно неправильно, но мне нужно какое-то другое направление, чем то, что я нахожу в Интернете.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(); 
     } 
+0

поэтому вопрос стороны здесь, вы передаете имена пользователей и пароль в ясном тексте ..? wow я бы этого не делал .. если у вас есть веб-приложение, у которого есть страница входа в систему, обрабатывайте переадресацию оттуда, как только вы проверяете, не храните этот тип информации в URL-адресе – MethodMan

+0

Спасибо, что заметили это. Очевидно, что значения здесь не являются реальными. К счастью, это спецификация, которая была дана и как мне было поручено справиться с этой интеграцией. Но да, вы здесь проповедуете хор. – John

+0

Вау, это нехороший подход. Возможно, они не знают, что делать это таким образом, чтобы показать себя ... – MethodMan

ответ

0

Я думаю, проблема может заключаться в том, что вы удаляете объект, пока асинхронные методы все еще работают.

 Смежные вопросы

  • Нет связанных вопросов^_^