标签: bad-request

使用asp.net和C#从javascript调用外部服务器上的webservice

我正在尝试使用ASP.NET页面测试Web服务调用,该页面创建一个包含用户名和密码字段以及"提交"按钮的表单.(我正在使用的jQuery和.js文件都包含在head元素的脚本标记中.)

"提交"按钮调用在C#代码隐藏文件中创建的函数,该函数调用单独的JavaScript文件.

protected void mSubmit_Click(object sender, EventArgs eventArgs)
{
    String authenticate = String.Format("Authentication(\"{0}\",\"{1}\");", this.mUsername.Text,this.mPassword.Text);
    Page.ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", authenticate, true);
}
Run Code Online (Sandbox Code Playgroud)

JavaScript函数Authenticate使用jQuery和Ajax对不同的服务器进行Web服务调用,发送JSON参数并期望返回JSON作为响应.

function Authentication(uname, pwd) {

    //gets search parameters and puts them in json format
    var params = '{"Header":{"AuthToken":null,"ProductID":"NOR","SessToken":null,"Version":1},"ReturnAuthentication":true,"Password":"' + pwd + '","Username":"' + uname + '",”ReturnCredentials”:false }';

    var xmlhttp = $.ajax({
        async: false,
        type: "POST",
        url: 'https://myHost.com/V1/Identity/Authenticate',
        data: params,
        contentType: 'application/json'
    });

    alert(xmlhttp.statusText);
    alert(xmlhttp.responseText);

    return;
}
Run Code Online (Sandbox Code Playgroud)

但是,因为我正在调用的Web服务与ASP.NET,C#和JavaScript文件位于不同的服务器上,所以我没有得到statusTextresponseText警告.

不知何故,没有任何东西被发送到Web服务,我没有得到任何回报,甚至没有错误.我尝试在beforeSend属性中添加一个函数,但是没有触发.我需要一种特殊的方式来处理调用服务器外的Web服务吗?

UPDATE!

在jjnguy,Janie和Nathan的建议下,我现在正在尝试使用HttpWebRequest对Web服务进行服务器端调用.使用jjnguy的一些代码以及这个问题的代码,我想出了这个.

public …
Run Code Online (Sandbox Code Playgroud)

c# https web-services httpwebrequest bad-request

5
推荐指数
1
解决办法
5952
查看次数

获得400个不良请求原因:需要来自google cloud stoarge json api

我正在尝试将文件(此示例中为png)上传到Google云端存储,但我的请求失败并显示以下400 Bad Request响应.

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Required"
   }
  ],
  "code": 400,
  "message": "Required"
 }
}
Run Code Online (Sandbox Code Playgroud)

我的POST请求看起来像这样.

POST https://www.googleapis.com/upload/storage/v1/b/unit_tests/o?uploadType=media HTTP/1.1
Accept: application/json, text/json, text/x-json, text/javascript
Authorization: OAuth XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Content-Type: image/png
Host: www.googleapis.com
Transfer-Encoding: chunked
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

96DA5
?PNG

???
IHDR??????????e?????sRGB???????gAMA????
?a???   pHYs???????o?d????IDATx^?|W???o??????????????,Y`I

*** FIDDLER: RawDisplay truncated at 128 characters. Right-click to disable truncation. ***
Run Code Online (Sandbox Code Playgroud)

文档我已经提供了必要的paramters等,所以我不能看到什么是必需的,我不提供.

json http bad-request google-cloud-storage

5
推荐指数
1
解决办法
2808
查看次数

错误的请求。您的浏览器发送了此服务器无法理解的请求。请求标头字段缺少':'分隔符

我正在编写HTTP代理应用程序的Java代码。在该浏览器中,请求未正确发送,因此服务器正在响应

错误的请求您的浏览器发送了此服务器无法理解的请求。请求标头字段缺少':'分隔符。我不明白为什么会发生错误。

我是java的新手,所以可以知道此问题的解决方案。

请求消息:

GET / HTTP/1.1<br>Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

我的请求中有错误,但我无法确定。

所以任何人都可以帮助我解决我的问题。

java sockets proxy bad-request http-error

5
推荐指数
0
解决办法
1940
查看次数

如何为解析错误自定义HTTP 400响应?

我已经编写了REST API服务,该服务要求所有响应均为JSON。但是,当Go HTTP请求解析器遇到错误时,它将返回400作为纯文本响应,而无需调用我的处理程序。例:

> curl -i -H 'Authorization: Basic hi    
there' 'http://localhost:8080/test' -v
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /test HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
> Authorization: Basic hi
> there
> 
< HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
< Content-Type: text/plain; charset=utf-8
Content-Type: text/plain; charset=utf-8
< Connection: close
Connection: close

< 
* Closing connection 0
Run Code Online (Sandbox Code Playgroud)

请注意无效的授权标头。当然,400是正确的响应,但是当然是文本/纯文本。有什么方法可以配置Go http解析器以使用自定义错误响应媒体类型和主体?

error-handling http bad-request go media-type

5
推荐指数
1
解决办法
2613
查看次数

电报Bot API:getChatMember为有效用户抛出USER_ID_INVALID

我试图找出User超组中是否存在特定对象,以便跟踪那些离开的人。

为此,我getChatMember为每个调用Bot API方法User并检查其状态是否为LeftKicked。但是,我注意到(最近?)我遇到USER_ID_INVALID了许多有效用户的错误,这些用户要么在超组中,要么在过去,然后又离开了。我还确认了那些帐户仍在 Telegram 上处于活动状态

这是我发送的HTTP请求:

POST https://api.telegram.org/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXX/getChatMember HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Content-Length: 46
Host: api.telegram.org

{"chat_id":-0000000000000,"user_id":000000000}
Run Code Online (Sandbox Code Playgroud)

这是我得到的回应:

HTTP/1.1 400 Bad Request
Server: nginx/1.12.2
Date: Fri, 20 Apr 2018 04:17:32 GMT
Content-Type: application/json
Content-Length: 74
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

{"ok":false,"error_code":400,"description":"Bad Request: USER_ID_INVALID"}
Run Code Online (Sandbox Code Playgroud)

无论从哪种角度看,它对我来说都是一个完全有效的要求。而且我还没有找到引发此错误的用户之间的共同模式。

我在这里想念什么?

编辑:正如@sean所指出的那样,让其中一个用户向机器人发送消息会秘密地为该特定用户修复错误。但是我绝对可以确定该用户以前见过,因为这就是我获取其用户ID的方式。是什么原因导致漫游器“忘记”了他,我又如何防止这种情况将来发生?

api bad-request telegram telegram-bot

5
推荐指数
1
解决办法
1812
查看次数

在 Apps 脚本中导入日历事件时如何调试 BadRequest 错误?

我使用了https://developers.google.com/apps-script/samples/automations/vacation-calendar上的“填充团队假期日历”示例来构建一个 Apps 脚本,以将所有外出事件拉入共享日历。该脚本几个月来一直运行良好。如果不对脚本进行任何更改,现在调用时Calendar.Events.import(event, TEAM_CALENDAR_ID);出现错误:

GoogleJsonResponseException:对 calendar.events.import 的 API 调用失败并出现错误:错误请求

我已经在调试器中运行了该脚本,并且该错误并没有提供任何有关错误实际内容的信息,除了 400 错误请求之外。还有很多与日期/时间格式相关的其他问答,但event我导入的变量来自之前的调用,Calendar.Events.list(...)因此它已经是 api 本身生成的 JS 事件对象。

这是一个最小的可重现示例:

let TEAM_CALENDAR_ID = '<calendar id goes here>';

function testImport() {
  const now = new Date();
  let user = Session.getActiveUser();
  
  // Fetch next 10 events
  let events = Calendar.Events.list(user.getEmail(), {
    timeMin: now.toISOString(),
    singleEvents: true,
    orderBy: 'startTime',
    maxResults: 10
  });

  if (events.items.length === 0) {
    console.error('No events found');
    return;
  }

  // Use next upcoming event for this user …
Run Code Online (Sandbox Code Playgroud)

google-calendar-api bad-request google-apps-script http-status-code-400

5
推荐指数
1
解决办法
519
查看次数

使用api 1.1的Twitter POST问题

我们刚刚更改为Twitter api 1.1,现在Tweeting不起作用并返回错误"远程服务器返回错误:(400)错误请求." 关于SO的研究表明它与身份验证有关,但我们正在发送我们刚刚从登录页面获得的accessToken和secret.这一切都适用于api 1.0.代码是 -

    public void Tweet(Action<string> response, string message)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("POST&");
        sb.Append(Uri.EscapeDataString(_postUrl));
        sb.Append("&");

        string oauthNonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
        string timeStamp = MakeTimestamp();

        var dict = new SortedDictionary<string, string>
        {
            { "oauth_consumer_key", _oAuthConfig.ConsumerKey },
            { "oauth_nonce", oauthNonce },
            { "oauth_signature_method", "HMAC-SHA1" },
            { "oauth_timestamp", timeStamp },
            { "oauth_token", _accessToken },
            { "oauth_version", "1.0" },
        };

        foreach (var keyValuePair in dict)
        {
            sb.Append(Uri.EscapeDataString(string.Format("{0}={1}&", keyValuePair.Key, keyValuePair.Value)));
        }

        string encodedMessage = EscapeAdditionalChars(Uri.EscapeDataString(message));
        sb.Append(Uri.EscapeDataString("status=" + encodedMessage));

        string …
Run Code Online (Sandbox Code Playgroud)

c# twitter oauth bad-request

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

当按服务名称从其他 docker-compose 服务请求时,Spring Boot REST 应用程序返回 400

我正在尝试在我们的开发设置中引入 Spring Boot REST 服务。开发设置使用 docker-compose 和 API 网关来公开同一域(即本地主机)上的各个服务。

当我尝试通过共享 docker-compose 文件中的服务名称从另一个容器内部向我的服务发出 HTTP 请求时,该服务返回 400。

设置

我已经编辑了我们的 docker-compose 文件,所以它看起来像下面介绍 Spring Boot Java 服务。该服务基于 spring-boot-starter-parent (2.0.3.RELEASE) 和 spring-boot-starter-web。我没有配置任何与 web 服务器相关的东西(除了添加 server.server-header 属性以确保我自己的请求命中我的服务)。

version: '3'
services:
  ...

  hello_java:
    build:
      context: ../hello-java/
      dockerfile: Dockerfile
    depends_on:
      - postgres
      - castle_black
    ports:
      - "8301:8080"

  castle_black:
    build: ../castle-black/tyk-gateway
    ports:
      - "8191:8080"
    depends_on:
      - redis
Run Code Online (Sandbox Code Playgroud)

行为

如果我从容器外部请求 hello 服务(例如在 localhost:8301 上的浏览​​器中),它会正确回复。如果我在一个容器内,但是获取了带有我的新服务的容器在 docker 网络中获得的 IP,并使用新服务也能正确响应。

下面我展示了从 API 网关容器内部到 Java 服务的请求,首先使用服务名称,然后使用已解析的 IP。它仅在 IP 案例中以正确的响应进行回复。

# curl -v http://hello_java:8080/hello-java/greet?username=Java
* …
Run Code Online (Sandbox Code Playgroud)

java bad-request spring-boot docker-compose

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

为什么我会收到 400 bad request 错误?使用 Django Rest 框架作为我的 Web 应用程序的后端,并使用 React 作为前端

我正在开发一个使用 openweathermap api 的简单 Web 应用程序。有一个对视图的 api 调用,该视图返回 api 数据,并显示用户输入的特定城市的天气温度和描述。

下面的 api 调用是对新功能的另一个调用,该新功能允许用户保存他们选择的特定天气数据。它从状态中获取 temp 和 desc,并将其发送到后端视图。然后,该视图将该数据保存到数据库中,并返回一个响应,然后我将使用该响应在同一 api 调用中显示数据。它给我一个 400 错误。我控制台记录了 temp 和 desc,它们都打印正确,因此我不会将未定义的数据发送到后端。这可能是我序列化数据的方式吗?

前端api调用

const saveWeather = (temperature, description) => {
     const requestOptions = {
          method: "POST",
          headers: { "Content-Type": "application/json"},
          body: JSON.stringify({
            temperature: temperature,
            description: description
          })
        };
    
    fetch("/api/savedweather", requestOptions)
      .then((response) => {
        if (response.ok) {
          console.log("OK");
        }
      })
      .catch((error) => {
        console.log(error);
      });
  }
Run Code Online (Sandbox Code Playgroud)

看法

class SaveWeather(APIView):
serializer_class = WeatherSerializer

def post(self, request, format=None):
    serializer = self.serializer_class(data=request.data)

    if …
Run Code Online (Sandbox Code Playgroud)

django bad-request fetch django-rest-framework reactjs

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

Flask 请求语法错误的问题

我正在测试/尝试学习 Flask 和 flast_restful。我得到的这个问题是:

code 400, message Bad request syntax ('name=testitem')

主要.py

from flask import Flask,request
from flask_restful import Api, Resource, reqparse

app = Flask(__name__)
api = Api(app)

product_put_args = reqparse.RequestParser()
product_put_args.add_argument("name", type = str, help = "Name of the product")
product_put_args.add_argument("quantity", type = int, help = "Quantity of the item")

products = {}

class Product(Resource):
    def get(self, barcode):
        return products[barcode]

    def put(self, barcode):
        args = product_put_args.parse_args()
        return {barcode: args}

api.add_resource(Product, "/product/<int:barcode>")

if(__name__) == "__main__":
    app.run(debug = True)
Run Code Online (Sandbox Code Playgroud)

和我的 …

python bad-request flask flask-restful

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