2013-03-27 4 views
0

У меня есть веб-приложение, которое отправляет содержимое формы на другой сайт. Этот другой я могу передать информацию в журнале без проблем, и страница аутентифицируется в порядке, но я не знаю, как передать массив информации, который требуется на другом конце. Массив содержит имена установок и их соответствующие значения настроек. У меня это работает в PHP, но не знаю, как сделать это в ASP.netПередача значений в файл XML

В PHP Я использую это для массива:

 $aParams = array(
    'customeremailaddress' => '[email protected]', 
    'customername' => 'mr test', 
    'exlibrisfile' => '@/ePubs/Ex-Libris.png' 
); 

И отправить массив:

curl_setopt($rCurl, CURLOPT_POSTFIELDS, $aParams); 

Вот код VB я закончил с, что возвращает ошибку 400 Bad Request:

  Dim postString As String = String.Format("customeremailaddress={0}&customername={1}&referenceid={2}&languagecode={3}&expirydays={4}", customeremailaddress, customername, referenceid, languagecode, expirydays) 
    Dim postBytes As Byte() = Encoding.UTF8.GetBytes(postString) 

    webRequest__1.ContentLength = postBytes.Length 

    Dim requestStream As Stream = webRequest__1.GetRequestStream() 
    requestStream.Write(postBytes, 0, postBytes.Length) 

Полный код:

 Public Sub TestConn()   

    Dim customeremailaddress As String = "[email protected]" 
    Dim customername As String = "mr test" 
    Dim referenceid As String = "ordertest123" 
    Dim languagecode As String = "1043" 
    Dim expirydays As String = "30" 

    Dim UserName As String = "testusername" 
    Dim password As String = "testpassword" 
    Dim siteCredentials As New NetworkCredential(UserName, password) 

    Dim URLAuth As String = "http://service.someurl.com/process.xml" 
    Dim postString As String = String.Format("customeremailaddress={0}&customername={1}&referenceid={2}&languagecode={3}&expirydays={4}", customeremailaddress, customername, referenceid, languagecode, expirydays) 
    Dim postBytes As Byte() = Encoding.UTF8.GetBytes(postString) 

    Const contentType As String = "application/x-www-form-urlencoded" 
    System.Net.ServicePointManager.Expect100Continue = False 

    Dim cookies As New CookieContainer() 
    Dim webRequest__1 As HttpWebRequest = TryCast(WebRequest.Create(URLAuth), HttpWebRequest) 
    webRequest__1.Method = "POST" 
    webRequest__1.ContentType = contentType 
    webRequest__1.CookieContainer = cookies 
    webRequest__1.ContentLength = postBytes.Length 
    webRequest__1.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" 
    webRequest__1.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
    webRequest__1.Referer = "http://service.someurl.com/process.xml" 
    webRequest__1.Credentials = siteCredentials 

    Dim requestStream As Stream = webRequest__1.GetRequestStream() 
    requestStream.Write(postBytes, 0, postBytes.Length) 

    Dim requestWriter As New StreamWriter(webRequest__1.GetRequestStream()) 

    Dim responseReader As New StreamReader(webRequest__1.GetResponse().GetResponseStream()) 
    Dim responseData As String = responseReader.ReadToEnd() 

    responseReader.Close() 
    webRequest__1.GetResponse().Close() 

End sub 

ответ

1

Это мой код для размещения данных на другом URL-адресе. Текст - это форма url-enonded string. Надеюсь, что это может помочь

C#

private string PostData(string text) 
{ 
    WebRequest request = WebRequest.Create(url); 
    request.Method = "POST"; 
    byte[] byteArray = Encoding.UTF8.GetBytes(text); 
    request.ContentType = "application/x-www-form-urlencoded"; 
    request.ContentLength = byteArray.Length; 

    using (Stream dataStream = request.GetRequestStream()) 
    { 
    dataStream.Write(byteArray, 0, byteArray.Length); 
    } 

    using(WebResponse response = request.GetResponse()) 
    using (Stream dataStream = response.GetResponseStream()) 
    using (StreamReader reader = new StreamReader(dataStream)) 
    { 
    return reader.ReadToEnd(); 
    } 


} 

VB.NET

Private Function PostData(text As String) As String 
Dim request As WebRequest = WebRequest.Create(url) 
request.Method = "POST" 
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(text) 
request.ContentType = "application/x-www-form-urlencoded" 
request.ContentLength = byteArray.Length 

Using dataStream As Stream = request.GetRequestStream() 
    dataStream.Write(byteArray, 0, byteArray.Length) 
End Using 

Using response As WebResponse = request.GetResponse() 
    Using dataStream As Stream = response.GetResponseStream() 
     Using reader As New StreamReader(dataStream) 
      Return reader.ReadToEnd() 
     End Using 
    End Using 
End Using 


End Function 
+0

Эй Draykos, спасибо за это. Я попробую сейчас и посмотрю, как я нахожусь. – Ryan

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