向指定地址提交自定义数据包的问题 在C#中,如何向一个指定的 URL 提交自定义的数据包?包括自定义标题信息,MIME 格式的包体数据,没做过B/S结构的东西,不知如何搞定,不知哪位高手给指点一二.越详细越好,本人没做过任何B/S结构的程序.谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下面是Java 的代码,但不知如何翻译成C#的代码:import java.net.HttpURLConnection;import java.net.URL;private Url url = null;HttpURLConnection conn = null;//先建立URL长连接public void connectUrl(String strUrl){ try { url = new URL(strUrl); conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("post"); } catch(Exception ex) { }}1.设置包头public void setHeader(){ conn.setRequestProperty("Code", strCode); ... conn.setHeader("Boundary", strBoundary);} 2、构建包体MIME (Multipurpose Internet Mail Extensions,多目的Internet邮件扩展)是创建用于电子邮件交换, 网络文档,及企业网和Internet上的其他应用程序中的文件格式的规范. //构建MIME格式的包体private MimeMessage mime;//构造MIME格式的包体private void setMimeMessage(){try{mime.setFrom(new InternetAddress(strFrom)); (1)mime.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(strTo)); (2)mime.setSubject(strSubject,"UTF-8"); (3)mime.setSentDate(new Date());mime.setContent(getMimeMultipart()); }catch(Exception ex){}}private MimeMultipart getMimeMultipart(){MimeMultipart mimeMultipart = new MimeMultipart();MimeBodyPart mimeBodyPart = new MimeBodyPart(); try{mimeBodyPart.setText((String)mimeBodyText.get(i),"UTF-8"); (4)mimeMultipart.addBodyPart(mimeBodyPart);Vector filePathes = getFilePaths();for(int i = 0; i < filePathes.size(); i++){String filePath = (String)filePathes.get(i);javax.activation.DataSource datasource = new FileDataSource(filePath);MimeBodyPart mimeFile = new MimeBodyPart();mimeFile.setDataHandler(new DataHandler(datasource));mimeFile.setFileName((new File(filePath)).getName());mimeMultipart.addBodyPart(mimeFile);}}catch(Exception e){}return mimeMultipart;} (1) 设置发送地址,在手机上显示发送方为该值 (2) 设置要发送到的手机号 (3) 手机上显示的标题值,经过笔者测试如果不指定编码为UTF-8,手机上显示为乱码(测试手机京瓷), 不知道其他手机是否有这种情况。 (4) 手机上显示的正文,经过笔者测试如果不指定编码为UTF-8,手机上显示为乱码(测试手机京瓷)。 3、提交内容到push接口public void write(String body){ java.io.OutputStream outStream = conn.getOutputStream(); (1) DataOutputStream dataOutStream = new DataOutputStream(outStream); dataOutStream.writeBytes(body); dataOutStream.flush(); dataOutStream.close();} (1) 这里的conn对象是引用第一步中实例的URLConnection对象,已经处于open状态。 4、读取push响应信息 提交信息与返回信息是实时的,因此应该在提交后即实现读取操作。 public String responsePush(){ StringBuffer sb = null; try { sb = new StringBuffer(""); BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); for(String line = null; (line = rd.readLine()) != null;) sb.append(line); rd.close(); } catch(Exception ex) { } return new String(sb);} responsePush()得到的是一个标准的xml字符串。 C#套接字问题 如何把字符型转变成浮点型 CRC16字符串校验问题,急 用C#代码 实现 key/value,不要用XML文件 C# [调用API]来控制音量 100分求给Table加属性,然后把它取出来,up有分 C#中使用SQL语句 c#中如何用WebClient把没隔50ms更新一次的图片都保存下来 一个算法问题不知谁能做出来 咱们来个C#书评!! C#有那些中间件 Nhibernate拒绝配置文件(NHibernate.Mapping.Attributes的使用)
import java.net.URL;private Url url = null;
HttpURLConnection conn = null;//先建立URL长连接
public void connectUrl(String strUrl)
{
try
{
url = new URL(strUrl);
conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("post");
}
catch(Exception ex)
{
}
}1.设置包头
public void setHeader()
{
conn.setRequestProperty("Code", strCode);
...
conn.setHeader("Boundary", strBoundary);
} 2、构建包体MIME (Multipurpose Internet Mail Extensions,多目的Internet邮件扩展)是创建用于电子邮件交换, 网络文档,及企业网和Internet上的其他应用程序中的文件格式的规范. //构建MIME格式的包体private MimeMessage mime;
//构造MIME格式的包体
private void setMimeMessage()
{
try
{
mime.setFrom(new InternetAddress(strFrom)); (1)
mime.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(strTo)); (2)
mime.setSubject(strSubject,"UTF-8"); (3)
mime.setSentDate(new Date());
mime.setContent(getMimeMultipart());
}
catch(Exception ex)
{
}
}
private MimeMultipart getMimeMultipart()
{
MimeMultipart mimeMultipart = new MimeMultipart();
MimeBodyPart mimeBodyPart = new MimeBodyPart();
try
{
mimeBodyPart.setText((String)mimeBodyText.get(i),"UTF-8"); (4)
mimeMultipart.addBodyPart(mimeBodyPart);
Vector filePathes = getFilePaths();
for(int i = 0; i < filePathes.size(); i++)
{
String filePath = (String)filePathes.get(i);
javax.activation.DataSource datasource = new FileDataSource(filePath);
MimeBodyPart mimeFile = new MimeBodyPart();
mimeFile.setDataHandler(new DataHandler(datasource));
mimeFile.setFileName((new File(filePath)).getName());
mimeMultipart.addBodyPart(mimeFile);
}
}
catch(Exception e)
{}
return mimeMultipart;
}
(1) 设置发送地址,在手机上显示发送方为该值
(2) 设置要发送到的手机号
(3) 手机上显示的标题值,经过笔者测试如果不指定编码为UTF-8,手机上显示为乱码(测试手机京瓷), 不知道其他手机是否有这种情况。
(4) 手机上显示的正文,经过笔者测试如果不指定编码为UTF-8,手机上显示为乱码(测试手机京瓷)。
3、提交内容到push接口public void write(String body)
{
java.io.OutputStream outStream = conn.getOutputStream(); (1)
DataOutputStream dataOutStream = new DataOutputStream(outStream);
dataOutStream.writeBytes(body);
dataOutStream.flush();
dataOutStream.close();
}
(1) 这里的conn对象是引用第一步中实例的URLConnection对象,已经处于open状态。
4、读取push响应信息 提交信息与返回信息是实时的,因此应该在提交后即实现读取操作。 public String responsePush()
{
StringBuffer sb = null;
try
{
sb = new StringBuffer("");
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
for(String line = null; (line = rd.readLine()) != null;)
sb.append(line);
rd.close();
}
catch(Exception ex)
{
}
return new String(sb);
}
responsePush()得到的是一个标准的xml字符串。