この例外はどのように可能ですか?
以下のようにグーグルサービスと呼んでいます。私のログは、オンラインでタイムアウト例外が発生したことを識別しましたvar requestStream = request.GetRequestStream();
catch
読み取りストリームが文字列(かなり小さい)から取得していると思ったので、ブロック内に配置することさえしませんでした。では、どうすればこれでタイムアウトを取得できますか?グーグルサーバーに時間がかかり、読み取りが遅くなり、これが発生する可能性はありますか?
// Google had issues with SSL certificates. We know address is good, so just kill validation
// and trust any certificate it might have..
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
// Prepare HTTPS request. 5 seconds timeout should be good for google.
const string Uri = "https://android.apis.google.com/c2dm/send";
var request = (HttpWebRequest)WebRequest.Create(Uri);
request.Headers.Add("Authorization", "GoogleLogin auth=" + this.SecurityToken);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Timeout = 5000;
// build the post string
var postString = new StringBuilder();
postString.AppendFormat("registration_id={0}", recipientId);
postString.AppendFormat("&data.payload={0}", message);
postString.AppendFormat("&collapse_key={0}", collapseKey);
// write the post-string as a byte array
var requestData = Encoding.ASCII.GetBytes(postString.ToString());
request.ContentLength = requestData.Length;
var requestStream = request.GetRequestStream();
requestStream.Write(requestData, 0, requestData.Length);
requestStream.Close();
// Do the actual request and read the response stream
try
{
var response = request.GetResponse();
var responseString = GetResponseString(response);
response.Close();
return responseString.Contains("id=")
? SendStatus.Ok
: GetSendStatusFromResponse(responseString);
}
catch (WebException ex)
{
var webResponse = (HttpWebResponse)ex.Response;
if (webResponse != null)
{