2017-02-09 6 views
0

Я хочу вызвать веб-службу Salesforce, но я получаю эту ошибку: в System.dll произошло необработанное исключение типа «System.Net.WebException» и дополнительная информация: Ошибка en el servidor remoto: (500) Ошибка междоузлия.Вызов веб-службы из консольного приложения C#

но когда я вызываю тот же веб-сервис в Java, я не получаю никаких ошибок.

Это C# код, я использую:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Net; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 

     static String ST = "some_string"; 
     static String pwd = "password"; 
     static String userName = "myusername"; 
     static String SERVER_URL; 
     static String SESSION_ID; 

     static void Main(string[] args) 
     { 
      string url = " https://test.salesforce.com/services/Soap/u/30.0"; 
      string details = CallRestMethod(url); 
     } 

     public static string CallRestMethod(string url) 
     { 
      HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url); 
      webrequest.Method = "POST"; 
      webrequest.ContentType = "text/xml;charset=UTF-8"; 
      webrequest.Headers.Add("SOAPAction", "\"\""); 

      String input = "<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Header/><Body><login xmlns=\"urn:partner.soap.sforce.com\"><username>" + userName + "</username><password>" + pwd + ST + "</password></login></Body></Envelope>"; 
      ASCIIEncoding encoding = new ASCIIEncoding(); 
      byte[] byte1 = encoding.GetBytes(input); 

      webrequest.GetRequestStream().Write(byte1, 0, byte1.Length); 

      /*Stream newStream = webrequest.GetRequestStream(); 
      newStream.Write(byte1, 0, byte1.Length); 
      newStream.Close();*/ 

      Console.WriteLine(webrequest.Headers); 

      HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse(); 
      Encoding enc = System.Text.Encoding.GetEncoding("utf-8"); 
      StreamReader responseStream = new StreamReader(webresponse.GetResponseStream(), enc); 
      string result = string.Empty; 
      result = responseStream.ReadToEnd(); 
      webresponse.Close(); 
      return result; 
     } 
    } 
} 

ответ

0

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

Подробнее: https://msdn.microsoft.com/en-us/library/cc636424(v=ax.50).aspx

+0

Я не хочу для использования wsdl, потому что я хочу использовать собственный метод отдыха. –

+0

Затем вам нужно будет предоставить более подробную информацию о методе REST. Ожидает ли в качестве входных данных XML-конверт SOAP? Вы можете вызвать метод с клиентом отдыха? –

+0

Я хочу войти в систему с помощью метода мыла и использовать метод rest для вставки данных, я могу сделать это с помощью java, но когда я пытаюсь с C#, я получаю ошибку, я думаю, это протокол https. –

0

Наконец я могу подключиться к веб-сервиса, я добавил эту строку:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

эта линия используется для использования протокола TLS 1.2