2016-03-25 7 views
1

私はrightmoveウェブサイトで自分のプロパティを表示するために私のプロパティサイトにrightmoveリアルタイムデータフィード(rtdf)を統合しています。私は、asp.netのWeb APIを使用してrightmoveのリストにデータを投稿しています。 彼らは私にこれらのSSLファイル[.p12、.pem、.jks]を提供しています。私は自分のローカルマシンのパーソナルストアに.p12証明書をインポートし、httpリクエストで を送信して、rightmoveによって提供されるtestmiテストAPIリンクに送ります。 サーバーから次のエラーが表示されます。 リモートサーバーから403というエラーが返されました。私は以下の、私の証明書が要求に正常にロード確認Rightmoveリアルタイムデータフィード(RTDF)の統合asp.net

は私のコード

public static string PostData(string data, string url) 
{ 
    String result = ""; 

    try 
    { 
     byte[] bytebuffer = Encoding.UTF8.GetBytes(data); 
     HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url); 
     objRequest.Method = "POST"; 
     objRequest.ContentLength = bytebuffer.Length; 
     objRequest.ContentType = "application/json"; 
     objRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"; 
     objRequest.PreAuthenticate = true; 
     objRequest.Accept = "application/json"; 
     objRequest.ClientCertificates.Add(CertificateHelper.GetRightmoveApiX509Certificate()); 

     using (Stream stream = objRequest.GetRequestStream()) 
     { 
      stream.Write(bytebuffer, 0, bytebuffer.Length); 
      stream.Close(); 
     } 

     HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse(); 
     using (StreamReader streamReader = new StreamReader(objResponse.GetResponseStream())) 
     { 
      result = streamReader.ReadToEnd(); 
      // Close and clean up the StreamReader 
      streamReader.Close(); 
     } 
    } 
    catch (Exception e) 
    { 
     result = "Exception: " + e.Message; 
    } 
    return result; 
} 

は403禁断のエラーから取り除くために私を助けています。

+0

これは、私がhttps://adfapi.adftest.rightmove.com/v1/property/sendpropertydetailsリクエストを送信しているURLです。 –

答えて

0

以下を使用してください。 私はそれをテストして、私の場合はうまくいきます。

// Grab Certificate 
X509Certificate2 cert2 = new X509Certificate2(
    AppDomain.CurrentDomain.BaseDirectory + "CertificateName.p12", 
    CertificatePasswordHere, 
    X509KeyStorageFlags.MachineKeySet); 


var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://adfapi.adftest.rightmove.com/v1/property/sendpropertydetails"); 
httpWebRequest.ContentType = "application/json"; 
httpWebRequest.Method = "POST"; 
httpWebRequest.ClientCertificates.Clear(); 
httpWebRequest.ClientCertificates.Add(cert2); 
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
    streamWriter.Write(data); 
    streamWriter.Flush(); 
    streamWriter.Close(); 
} 

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
{ 
    var result = streamReader.ReadToEnd(); 
}