【问题标题】:Translate a Web Service POST from Java to .NET将 Web 服务 POST 从 Java 转换为 .NET
【发布时间】:2012-08-30 14:03:52
【问题描述】:

下面是从连接到网站并通过 POST 方法上传文件的 Java 客户端的片段。我必须在 Visual Studio 环境中重现此客户端,但我在 .NET 环境中没有看到 Java 中使用的 setEntity() 函数的任何等效函数。

我发现的一切都指向使用这个...

public void uploadFile(File uploadFile, String partner, String key,
            String baseUrl,boolean isPartner) throws IOException {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getParams().setParameter(
        CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1
    );
    String url = baseUrl + "?" + (isPartner ? "partnerId" : "ori") + "="
            + partner.toUpperCase() + "&authKey=" 
            + key+ "&key=" 
            + key;
    HttpPost httppost = new HttpPost(url);
    MultipartEntity multipartEntity = new MultipartEntity();
    ContentBody contentBody = new FileBody(uploadFile, "text/xml"); 
    multipartEntity.addPart("dataFile", contentBody); 
    httppost.setEntity(multipartEntity);

    HttpResponse response;
    response = httpclient.execute(httppost);

    HttpEntity resEntity = response.getEntity();

    if (resEntity != null) {
        resEntity.consumeContent();
    }

    httpclient.getConnectionManager().shutdown();
}

我在 Visual Studio 中找到的所有东西都使用下面这样的 POST 方法。 WebRequest 对象没有明显的方法来添加我需要的参数。

Dim request As WebRequest = WebRequest.Create("http://Test.com/import?partnerId=2&authKey=XdUa")
request.Method = "POST"
Dim postData As String = StrData
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
request.ContentType = "dataStr"
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()

任何指导将不胜感激。如果我的问题不清楚,请告诉我,我会再试一次。

【问题讨论】:

  • 您的代码在我看来就像 Visual Basic。我不知道那种语言,但如果是的话,你的标签也应该反映这一点。

标签: java visual-studio http-post httpclient


【解决方案1】:

可以添加如下代码sn-p来添加参数

request.ContentType="application/x-www-form-urlencoded"

Dim postData As String = "name1="+value1+"&name2="+value2

Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)

休息将保持不变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多