在C#中,如何向一个指定的 URL 提交自定义的数据包?包括自定义标题信息,MIME 格式的包体数据,没做过B/S结构的东西,不知如何搞定,不知哪位高手给指点一二.越详细越好,本人没做过任何B/S结构的程序.
谢谢!

解决方案 »

  1.   

    下面是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字符串。