私はSalesForce.comバルクAPIに接続しようとしていますので、アプリケーションから大量のデータをアップロードできます。私はPDF documentationを通してCURLを使ってPOST要求を行うことを強調しました。指示に沿って、サーバーにログインするためのXML形式のテキストファイルを作成しました。C#を使用してSalesForceバルクAPIに接続
以下Login.txt内容:ここ
<?xml version="1.0" encoding="utf-8" ?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<n1:login xmlns:n1="urn:partner.soap.sforce.com">
<n1:username>my username</n1:username>
<n1:password>my password</n1:password>
</n1:login>
</env:Body>
</env:Envelope>
私は、ログイン要求をするために私のコードでやろうとしているものです:
XmlDocument XMLResponse = null;
HttpWebRequest httpRequest;
HttpWebResponse httpResponse = null;
Stream requestStream = null;
Stream responseStream = null;
XmlTextReader xmlReader;
httpRequest = HttpWebRequest)WebRequest.Create("https://login.salesforce.com/services/Soap/c/20.0");
try
{
byte[] bytes = File.ReadAllBytes(filename);
httpRequest.Method = "POST";
httpRequest.ContentLength = bytes.Length;
httpRequest.ContentType = "text/xml; charset=UTF-8";
httpRequest.Headers.Add("SOAPAction: login");
requestStream = httpRequest.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
if (httpResponse.StatusCode == HttpStatusCode.OK)
{
responseStream = httpResponse.GetResponseStream();
xmlReader = new XmlTextReader(responseStream);
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlReader);
XMLResponse = xmldoc;
xmlReader.Close();
}
httpResponse.Close();
}
このコードは、私は常に取得を実行する場合500エラー。誰かが私がやろうとしていることに何か経験を持っていますか?私にいくつかの提案をお願いしますか?
ありがとうございます。
Salesforceへログインするための次のC#コードを使用しますか?すぐに.GetResponse()が呼び出されると、InnerExceptionを持たないジェネリック500例外を持つ私のcatchブロックに送られます。 – Adam
WebExceptionには、例外の場合に応答にアクセスするために使用できるResponseプロパティが含まれています。 – superfell
提案をありがとう!ここで私が応答を調べると、「SOAPリクエストはSOAP 1.1を使用しなければならず、SOAP 1.1エンベロープをドキュメント・ルートとして受け取らなかった」という次のフォルト・メッセージが表示されます。私は実際にSOAPの使用経験がありませんので、私は上記のコードでこの問題を説明する何かを見ますか? – Adam