我試圖在C#中爲iPhone編寫推送服務器。我有以下代碼:C#iPhone推送服務器?
// Create a TCP/IP client socket.
using (TcpClient client = new TcpClient())
{
client.Connect("gateway.sandbox.push.apple.com", 2195);
using (NetworkStream networkStream = client.GetStream())
{
Console.WriteLine("Client connected.");
X509Certificate clientCertificate = new X509Certificate(@"certfile.p12", passwordHere);
X509CertificateCollection clientCertificateCollection = new X509CertificateCollection(new X509Certificate[1] { clientCertificate });
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null
);
try
{
sslStream.AuthenticateAsClient("gateway.sandbox.push.apple.com");
}
catch (AuthenticationException e)
{
Console.WriteLine("Exception: {0}", e.Message);
if (e.InnerException != null)
{
Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
}
Console.WriteLine("Authentication failed - closing the connection.");
client.Close();
return;
}
}
ECT ....
只有我不斷收到一個例外: 「到SSPI調用失敗,請參見內部異常」 內部異常 - >「收到的消息出乎意料或格式不正確。「
有沒有人有任何想法這裏怎麼了?
想通了。替換爲 sslStream.AuthenticateAsClient(「gateway.sandbox.push.apple.com」); with sslStream.AuthenticateAsClient(「gateway.sandbox.push.apple.com」,clientCertificateCollection,SslProtocols.Default,false); 並在PC上註冊證書。 – Kyle 2009-06-29 00:15:37
它適合你嗎? – Zanoni 2009-07-03 17:10:14
是的,我有一切工作,並可以推送消息到我的iPhone。不要忘記用windows註冊你的.p12文件。 – Kyle 2009-07-06 22:26:02