3

同じマシンの別のポートで WEB API への呼び出しを作成しようとしています。それは正常に動作し、文字列を送り返し、.NET ブレークポイントにヒットしますが、パラメーターが渡されることはありません..(null です)..その文字列を渡すために従来の ASP コードに欠けているものはありますか? (送信するデータ)

私の呼び出しコード:

  <%
      Response.Buffer = True
      Dim xml
     ' Set xml = Server.CreateObject("Microsoft.XMLHTTP")
    Set xml = server.Createobject("MSXML2.XMLHTTP")

     DataToSend="<?xml version=""1.0"" encoding=""UTF-8""?><codes sku=""123123"" num-codes=""234234"" />"

      xml.Open "POST", _
          "http://localhost:1303/api/RegistrationCode", _
          False

      xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
      xml.setRequestHeader "X-VitalSource-API-Key", "xxx"

      xml.Send DataToSend

      'Display the HTML both as HTML and as text
      Response.Write "<h1>The HTML text</h1><xmp>"
      Response.Write xml.responseText
      Response.Write "</xmp><p><hr><p><h1>The HTML Output</h1>"
      Response.Write xml.responseText
      Set xml = Nothing
%>

Web API コード:

   public class RegistrationCodeController : ApiController
{
    string testXmlString = "<SomeValue>6</SomeValue>";



       public string Post([FromBody]string value)
    {
        return testXmlString;
    }

}
4

2 に答える 2

4

私もこの問題に遭遇しました。返事が遅くなりましたが…

URL のデータが大きすぎてサイズ制限を超えて送信できないケースがあったため、GET ではなく POST を使用する必要がありました。いくつかの試行錯誤の後、これが私がしたことです:

従来の ASP ファイル内

Public Function PostData(link, data)
    on error resume next

    if link<>"" then
        data = "{'Name': '" & data & "'}"
        data = Replace(data, "'", """")

        Dim oXMLHTTP
        Set oXMLHTTP = CreateObject("Msxml2.XMLHTTP.3.0")
        if oXMLHTTP is nothing then Set oXMLHTTP = CreateObject("Microsoft.XMLHTTP")

        oXMLHTTP.Open "POST", link, False
        oXMLHTTP.setRequestHeader "Content-Type", "application/json"
        oXMLHTTP.send data

        If oXMLHTTP.Status = 200 Then
            PostData = oXMLHTTP.responseText
        Else
            response.Write "Status: " & oXMLHTTP.Status & " | "
            response.Write oXMLHTTP.responseText
            response.end
        End If

    end if
End Function

私の WebAPI 関数では:

public class PayLoad
{
    public string Name { get; set; }
}

[Route("api/Values/PostUnidataMethod")]
[HttpPost]
public string PostUnidataMethod([FromBody]PayLoad data)
{
    return data.Name;
}

私は ASP にあまり詳しくありませんが、文字列だけでなく、JSON を使用して Web API 関数にデータを送信する例をいくつか見つけました。そこで、単純な DTO を作成し、データを JSON 文字列にしました。一重引用符を二重引用符に変換することを忘れないでください。私はJSONLintがデータをテストして確認するのが好きです。

于 2015-01-22T17:08:46.450 に答える