相关疑难解决方法(0)

REST API:使用正文获取请求

我想实现一个REST API,并且在我的GET请求上需要一个正文.(如下所述:带请求主体的HTTP GET)

是否有http客户端无法发送带有GET请求的正文?Fiddler能够做到这一点,虽然消息框是红色的.

.net rest http-get asp.net-web-api frombodyattribute

22
推荐指数
2
解决办法
4万
查看次数

使用GET请求发送POST数据有效吗?

例如,使用Curl,我可以在GET请求中"发布"数据.这是有效的吗?我的意思是:

  • 是否禁止任何RFC规范?
  • 那个人有充分的理由使用它吗?

谢谢你的帮助.

post get request httpwebrequest

20
推荐指数
2
解决办法
1万
查看次数

向其他人提供一个Web API转发请求的最佳方法

我有一些Web服务在不同的服务器上运行,我希望有一个Web服务在其余的"前面"运行,以决定应该根据标头值转发请求的Web服务(服务器).

这个想法是客户会发送请求,比如说:

http://api.mysite.com/cars
Run Code Online (Sandbox Code Playgroud)

mysite.com上的API将检查请求,从API密钥中提取信息(在标头中提供)并重定向到适当的服务器,例如

http://server4.mysite.com/api/cars
Run Code Online (Sandbox Code Playgroud)

这会起作用吗?我担心如何将响应(w/data)从"server4"返回给客户端.响应是仅返回给第一台服务器还是客户端实现响应?

asp.net asp.net-web-api asp.net-web-api2

10
推荐指数
2
解决办法
1万
查看次数

将数据发送到使用C#接受JSON数据的通用处理程序

我有一种情况,我正在访问ASP.NET Generic Handler以使用JQuery加载数据.但是,由于从JavaScript加载的数据对搜索引擎抓取工具不可见,我决定从C#加载数据,然后将其缓存为JQuery.我的处理程序包含很多逻辑,我不想再在后面的代码上应用.这是我的Handler代码:

public void ProcessRequest(HttpContext context)
        {
            JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
            string jsonString = string.Empty;

            context.Request.InputStream.Position = 0;
            using (var inputStream = new System.IO.StreamReader(context.Request.InputStream))
            {
                jsonString = inputStream.ReadToEnd();
            }

            ContentType contentType = jsonSerializer.Deserialize<ContentType>(jsonString);
            context.Response.ContentType = "text/plain";
            switch (contentType.typeOfContent)
            {
                case 1: context.Response.Write(getUserControlMarkup("SideContent", context, contentType.UCArgs));
                    break;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我可以getUserControlMarkup()从C#调用该函数,但我必须在调用它时应用一些基于URL的条件.该contentType.typeOfContent实际上是基于URL的参数.

如果可能将JSON数据发送到此处理程序,请告诉我如何执行此操作.我试图像这样访问处理程序:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Common.host + "Handlers/SideContentLoader.ashx?typeOfContent=1&UCArgs=cdata");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

但它NullReferenceException在行中给出了Handler代码: ContentType contentType = jsonSerializer.Deserialize<ContentType>(jsonString);

javascript c# asp.net jquery json

8
推荐指数
2
解决办法
4541
查看次数

发送 GET 请求和获取无法发送动词类型的内容正文

我正在尝试发送一个 GET 请求,如下所示,但我不断收到控制台上的以下错误:

Test_API_Access.Exception:Cannot send a content-body with this verb-type.
System.Net.ProtocolViolationException: Cannot send a content-body with this verb-type.
   at System.Net.HttpWebRequest.CheckProtocol(Boolean onRequestStream)
   at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
   at System.Net.HttpWebRequest.GetRequestStream()
   at Test_API_Access.Program.Test_API_Access() in c:\Users\<username>\Documents\Visual Studio 2013\Projects\Test_API_Access\Test_API_Access\Program.cs:line 43
Run Code Online (Sandbox Code Playgroud)

我阅读了另一个关于堆栈溢出的相关线程,这里提到:无法发送具有此动词类型的内容正文

但我想,我一直(HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())在我的 try 块中使用 using可以避免这个错误吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.Net;
using System.Runtime.Serialization;
using System.IO;
namespace Test_API_Access
{ class Program
   {  static void Main(string[] args)
      { Test_API_Access();}
      private static void Test_API_Access()
       {  var publicKey = …
Run Code Online (Sandbox Code Playgroud)

.net get webrequest

4
推荐指数
1
解决办法
4万
查看次数

Restsharp 错误“无法发送具有此动词类型的内容正文。”

我正在使用 Restsharp 调用 eBay API。代码如下。

    Async Sub fulfillmentPolicies()

        Dim request As New RestRequest(sFulfillmentURL, Method.Get)
        request.AddHeader("Authorization", "Bearer " & uT.access_token)
        request.AddHeader("Content-Type", "application/json")
        Try
            Dim response = Await client.GetAsync(request)
            If response.StatusCode = HttpStatusCode.OK Then
                Dim sR As String = response.Content
                Dim pP As PaymentPolicy = JsonSerializer.Deserialize(Of PaymentPolicy)(sR)
            End If
        Catch ex As Exception

        End Try
    End Sub
Run Code Online (Sandbox Code Playgroud)

客户端设置在此过程之外,因为它被多次使用。

在测试中,当我进行此调用时,我收到错误消息“无法发送具有此动词类型的内容正文”。我可以使用相同的标头在 Postman 中成功进行此调用。对这里发生的事情有什么想法吗?有办法修复吗?

vb.net restsharp

2
推荐指数
1
解决办法
8887
查看次数