.net和jiava交互中用的最多的是的restful模式
关键方法和关键类HttpWebRequest如下:

/// <summary>
/// request restful web service
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string RequestRestHttp(RestfulParams param)
{
string responseString = "";
string strurl = param.URL;
if (param.Method == HttpMethod.GET)
strurl = string.Format("{0}?{1}", strurl, param.Context);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strurl);
request.Method = param.Method.ToString();
request.Accept = GetHttpMediaType(param.ResponseMediaType);
request.ContentType = GetHttpMediaType(param.RequestMediaType);
request.Timeout = param.TimeOut;
request.Headers.Add("content", GetHttpMediaType(param.RequestMediaType));
if (param.Headers != null)
{
foreach (var item in param.Headers)
{
if (item.Key.ToLower().Trim() != "content")
request.Headers.Add(item.Key, item.Value);
}
}
//request.Headers.Add("appkey", "123456");
if (param.Method != HttpMethod.GET)
{
byte[] byteArray = param.Encoding.GetBytes(param.Context);
request.ContentLength = byteArray.Length;
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteArray, 0, byteArray.Length);
}
}
WebResponse response = request.GetResponse();
if (response.Headers != null)
{
param.ResponseHeaders.Clear();
foreach (var item in response.Headers.AllKeys)
param.ResponseHeaders.Add(item, response.Headers[item]);
}
using (StreamReader streamRead = new StreamReader(response.GetResponseStream()))
{
responseString = streamRead.ReadToEnd();
}
return responseString;
}
/// request restful web service
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string RequestRestHttp(RestfulParams param)
{
string responseString = "";
string strurl = param.URL;
if (param.Method == HttpMethod.GET)
strurl = string.Format("{0}?{1}", strurl, param.Context);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strurl);
request.Method = param.Method.ToString();
request.Accept = GetHttpMediaType(param.ResponseMediaType);
request.ContentType = GetHttpMediaType(param.RequestMediaType);
request.Timeout = param.TimeOut;
request.Headers.Add("content", GetHttpMediaType(param.RequestMediaType));
if (param.Headers != null)
{
foreach (var item in param.Headers)
{
if (item.Key.ToLower().Trim() != "content")
request.Headers.Add(item.Key, item.Value);
}
}
//request.Headers.Add("appkey", "123456");
if (param.Method != HttpMethod.GET)
{
byte[] byteArray = param.Encoding.GetBytes(param.Context);
request.ContentLength = byteArray.Length;
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteArray, 0, byteArray.Length);
}
}
WebResponse response = request.GetResponse();
if (response.Headers != null)
{
param.ResponseHeaders.Clear();
foreach (var item in response.Headers.AllKeys)
param.ResponseHeaders.Add(item, response.Headers[item]);
}
using (StreamReader streamRead = new StreamReader(response.GetResponseStream()))
{
responseString = streamRead.ReadToEnd();
}
return responseString;
}
HttpWebRequest的参数类:RestfulParams类如下

/// <summary>
/// rest ful param class
/// </summary>
public class RestfulParams : RemoteParams
{
public string URL { get; set; }
public string Context { get; set; }
public Dictionary<string, string> Headers { get; set; }
public HttpMethod Method { get; set; }
public MediaTypeEnum RequestMediaType { get; set; }
public MediaTypeEnum ResponseMediaType { get; set; }
public Encoding Encoding { get; set; }
public Dictionary<string, string> ResponseHeaders { get; set; }
public string Querys { get; set; }
public int TimeOut { get; set; }
public RestfulParams()
{
RequestMediaType = MediaTypeEnum.Xml;
ResponseMediaType = MediaTypeEnum.Xml;
Encoding = Encoding.UTF8;
Headers = new Dictionary<string, string>();
ResponseHeaders = new Dictionary<string, string>();
TimeOut = ConfigManager.Instance.RestfulTimeOut; //.AppSettings["RestfulTimeOut"];
}
}
/// <summary>
/// used method
/// </summary>
public enum HttpMethod
{
GET,
POST,
PUT,
DELETE
}
/// rest ful param class
/// </summary>
public class RestfulParams : RemoteParams
{
public string URL { get; set; }
public string Context { get; set; }
public Dictionary<string, string> Headers { get; set; }
public HttpMethod Method { get; set; }
public MediaTypeEnum RequestMediaType { get; set; }
public MediaTypeEnum ResponseMediaType { get; set; }
public Encoding Encoding { get; set; }
public Dictionary<string, string> ResponseHeaders { get; set; }
public string Querys { get; set; }
public int TimeOut { get; set; }
public RestfulParams()
{
RequestMediaType = MediaTypeEnum.Xml;
ResponseMediaType = MediaTypeEnum.Xml;
Encoding = Encoding.UTF8;
Headers = new Dictionary<string, string>();
ResponseHeaders = new Dictionary<string, string>();
TimeOut = ConfigManager.Instance.RestfulTimeOut; //.AppSettings["RestfulTimeOut"];
}
}
/// <summary>
/// used method
/// </summary>
public enum HttpMethod
{
GET,
POST,
PUT,
DELETE
}
枚举类:

public enum EncodingTypeEnum {
/// <remarks/>
Default,
/// <remarks/>
Unicode,
/// <remarks/>
UTF8,
/// <remarks/>
ASCII,
}
/// <remarks/>
Default,
/// <remarks/>
Unicode,
/// <remarks/>
UTF8,
/// <remarks/>
ASCII,
}

public enum MediaTypeEnum {
/// <remarks/>
Default,
/// <remarks/>
Text,
/// <remarks/>
Xml,
/// <remarks/>
Json,
}
/// <remarks/>
Default,
/// <remarks/>
Text,
/// <remarks/>
Xml,
/// <remarks/>
Json,
}