コード例 #1
0
ファイル: MimeProxy.cs プロジェクト: killbug2004/WSProf
		public MimeProxy(Stream mimeStream)
		{
			if (null == mimeStream)
				throw new ArgumentNullException();

			CreateImplementor();
			CreateRecipientEnumerators();

			MimeSize = mimeStream.Length;

			if (MimeSize > 5000000)	// 5 megablobs -> assign via a file, takes less memory
			{
				// save to file
				string sTempFile = Path.GetTempFileName();
				using (FileStream fs = new FileStream(sTempFile, FileMode.Create))
				{
					Workshare.Policy.StreamUtils.CopyStreamToStream(mimeStream, fs);
				}
				Chilkat.Mime mime = new Chilkat.Mime();
				mime.UnlockComponent(@"WRKSHRSMIME_FGWvbpcy2P6f");
				if (mime.LoadMimeFile(sTempFile))
				{
					m_mimeImplementor.SetFromMimeObject(mime);
					mime.Dispose();
				}
				File.Delete(sTempFile);
			}
			else
			{

				mimeStream.Position = 0;

				this.MimeContent = ReadTextFromStream(mimeStream, Encoding.Unicode);

				if (this.MimeContent == "\r\n\r\n")
				{
					this.MimeContent = ReadTextFromStream(mimeStream, Encoding.ASCII);
				}

				mimeStream.Position = 0;
			}
		}
コード例 #2
0
ファイル: Form1.cs プロジェクト: gencer/CSharp-Async-Sockets
        // Remember, this callback happens in a background thread...
        void m_clientSock_OnTaskCompleted(object sender, Chilkat.TaskCompletedEventArgs args)
        {
            if (args.Task.UserData.Equals("connect"))
            {
                if (args.Task.GetResultBool() == false)
                {
                    fgAppendToTextBox1("Connect failed!\r\n");
                    fgAppendToTextBox1(args.Task.ResultErrorText);
                    return;
                }

                // This was our ConnectAsync call that completed...
                fgAppendToTextBox1("Connect completed.\r\n");
                sendHttpGet();
            }
            else if (args.Task.UserData.Equals("sendHttpGet"))
            {
                if (args.Task.GetResultBool() == false)
                {
                    fgAppendToTextBox1("Send GET failed!\r\n");
                    fgAppendToTextBox1(args.Task.ResultErrorText);
                    return;
                }

                fgAppendToTextBox1("GET request sent.\r\n");
                readHttpResponseHeader();
            }
            else if (args.Task.UserData.Equals("readResponseHeader"))
            {
                if (args.Task.TaskSuccess == false)
                {
                    fgAppendToTextBox1("Read response header failed!\r\n");
                    fgAppendToTextBox1(args.Task.ResultErrorText);
                    return;
                }

                fgAppendToTextBox1("Received response header.\r\n");
                string receivedString = args.Task.GetResultString();
                fgAppendToTextBox1(receivedString);

                // The receivedString contains the HTTP start line followed by the MIME response header.
                // (for this example, discard the start line)
                int    endOfFirstLine = receivedString.IndexOf("\r\n");
                string responseHeader = receivedString.Substring(endOfFirstLine + 2);

                // Parse the MIME to find out the size of the HTTP response body.
                Chilkat.Mime mime = new Chilkat.Mime();
                mime.LoadMime(responseHeader);
                string strContentLength = mime.GetHeaderField("Content-Length");
                if (strContentLength == null)
                {
                    fgAppendToTextBox1("No Content-Length header in the response!\r\n");
                    return;
                }
                int contentLength = Convert.ToInt32(strContentLength);

                readHttpResponseBody(contentLength);
            }
            else if (args.Task.UserData.Equals("readResponseBody"))
            {
                if (args.Task.TaskSuccess == false)
                {
                    fgAppendToTextBox1("Read response body failed!\r\n");
                    fgAppendToTextBox1(args.Task.ResultErrorText);
                    return;
                }

                fgAppendToTextBox1("Received response body.\r\n");
                byte[] responseBody = args.Task.GetResultBytes();
                // For this example, assume utf-8.
                string responseBodyStr = System.Text.Encoding.UTF8.GetString(responseBody);
                fgAppendToTextBox1(responseBodyStr);
                fgAppendToTextBox1("\r\nHTTP GET Completed Successfully\r\n");
            }
        }