How to use the HttpWebRequest object

This article was previously published under Q313126
SUMMARY
This article describes how to use the HttpWebRequest object and the HttpWebResponse object from the "System.Net" namespace to modify the urn:schemas:mailheader:subject property for an item in Microsoft Exchange 2000 Server in Microsoft Visual C# .NET.
MORE INFORMATION
To modify the urn:schemas:mailheader:subject property for an item in Visual C# .NET, follow these steps:
Start Microsoft Visual Studio .NET.
On the File menu, point to New, and then click Project.
In the Visual C# Projects types list, click Console Application.

By default, Class1.cs is created.
In the code window, replace the code with the following:using System;
using System.Net;
using System.IO;        

namespace WebDavNET
{
   /// <summary>
   /// Summary description for Class1.
   /// </summary>
   class Class1
   {
      static void Main(string[] args)
      {
         try
         {
            // TODO: Replace with the URL of an object in Exchange Server
            string sUri = "http://ExchServer/Public/MyFolder/Test.EML";

            System.Uri myUri = new System.Uri(sUri);
            HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(myUri);

            string sQuery;
            sQuery = "<?xml version='1.0'?>" +
               "<a:propertyupdate xmlns:a='DAV:' " +
               "xmlns:m='urn:schemas:mailheader:'>" +
               "<a:set><a:prop>" +
               "<m:subject>" + "ModifiedSubject" + "</m:subject>" +
               "</a:prop></a:set>" +
               "</a:propertyupdate>";

            // Set Credentials
            // TODO: Replace with appropriate user credential
            NetworkCredential myCred = new NetworkCredential(@"DomainName/UserName", "Password");
            CredentialCache myCredentialCache = new CredentialCache();
            myCredentialCache.Add(myUri, "Basic", myCred);
            HttpWRequest.Credentials = myCredentialCache;
       
            //Uncomment the following statement and comment the previous 4 statements if you
            //use Integrated Windows authentication
            //httpWRequest.Credentials = CredentialCache.DefaultCredentials

            //Note In Basic type authentication, the username and the password are sent as base64-encoded text, which is
            //easily decoded. Microsoft recommends that you use Basic over SSL to help protect the username and the password.

            // Set Headers
            HttpWRequest.KeepAlive = false;
            HttpWRequest.Headers.Set("Pragma", "no-cache");
            HttpWRequest.Headers.Set("Translate", "f");
            HttpWRequest.ContentType =  "text/xml";
            HttpWRequest.ContentLength = sQuery.Length;

            //set the request timeout to 5 min.
            HttpWRequest.Timeout = 300000;
            // set the request method
            HttpWRequest.Method = "PROPPATCH";

            // You must store the data in a byte array
            byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes(sQuery);
            HttpWRequest.ContentLength = ByteQuery.Length;
            Stream QueryStream = HttpWRequest.GetRequestStream();
            // Write the data to be posted to the Request Stream
            QueryStream.Write(ByteQuery,0,ByteQuery.Length);
            QueryStream.Close();

            // Send Request and Get Response
            HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();
           
            // Get the Status code
            int iStatCode =  (int)HttpWResponse.StatusCode;
            string sStatus = iStatCode.ToString();
            Console.WriteLine("Status Code: {0}", sStatus);
            // Get the request headers
            string sReqHeaders = HttpWRequest.Headers.ToString();
            Console.WriteLine(sReqHeaders);

            // Read the Response Stream
            Stream strm = HttpWResponse.GetResponseStream();
            StreamReader sr = new StreamReader(strm);
            string sText = sr.ReadToEnd();
            Console.WriteLine("Response: {0}", sText);

            // Close Stream
            strm.Close();

            // Clean Up
            myCred = null;
            myCredentialCache = null;
            HttpWRequest = null;
            HttpWResponse = null;
            QueryStream = null;
            strm = null;
            sr = null;     
         }
         catch (Exception e)
         {
            Console.WriteLine("{0} Exception caught.", e);
         }
      }
   }

}
Search for TODO in the code, and then modify the code for your environment.
Build and then run the program.
Make sure that the subject of the specified item has been modified.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值