api是否接受书面号码作为选择?

问题描述

我使用的azcapture api仅在获取/请求api的“路径”选项的“ path”末尾接受数字作为id,并且在我输入id时可以正常工作。

FROM ubuntu:18.04

RUN adduser --disabled-password --gecos "" newuser

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -y install time && \
    apt-get -y install gcc mono-mcs && \
    apt-get install pmccabe && \
    rm -rf /var/lib/apt/lists/*

像上面一样键入1234455时,它可以工作。但是由于这是resp,所以我无法事先知道id,因此我从POST的req结果中传递了它,现在我执行GET,实际上,我已经将它们链接在一起而没有使用Promises:

Var options = {
   'path':'url+key+1234455
}

即使我使用parseInt或Number()解析ID,或者如果我随后解析或强制,以上操作也总是失败

 Function secondCall(id)
    Console.log (id)
    Var options = { 'path': url+key+id
    } 

因为ClientRequestArgs.path是一个字符串(ClientRequestArgs.path ?: string),所以我相信它总是解析为字符串。

在这里看到两倍还是有一个基本问题?

POSTMAN可以正常工作,并且我下面的代码是从POSTMAN导出的,除了chainResolve函数中的前四行是我的转换代码

如果我更改此行并将替换的ID替换为预先生成的ID,它将起作用: 网址:“ http://azcaptcha.com/res.PHP?key=kowg1cjodmtlyiyqheuzjfzta4ki0vwn&action=get&id=335439890”,

但是作为resolveID,将转换后的字符串(预先生成的ID)转换为int不会起作用。

省略键的完整代码

 id.toString()

解决方法

解决了!事实证明,如果验证码为CAPTCHA_NOT_READY,则此API不会给您任何结果。因此解决方案是设置一个超时,并在第二个请求的响应块中使用回调将其推送:

axios(config)
    .then(function (response) {
      if (result === 'CAPCHA_NOT_READY'){
                console.log('Captcha is being processed');  
                var startTime = setTimeout(function() {
                waitR(id);
                    clearTimeout(startTime);
                },5000);
            } else {
                console.log(result.split('|')[1]);
            }
    })
    .catch(function (error) {
      console.log(error);
    });

waitR = (id) => {
    console.log('The result is being processed ...');
    chainResolve(id);
}