我刚刚创建了一个电报机器人来完成学校关于ifttt和电报整合的任务.
我的问题是尝试浏览器使用Telegram api的方法,它返回给我以下字符串:{"ok":false,"error_code":404,"description":"Not Found"}
我使用此链接尝试访问我的机器人:https: //api.telegram.org/botToken/getUpdates
机器人的令牌有效
你可以帮你解决问题吗?
我正在尝试使用ImageShack API上传图像.要使用它,我应该POST使用图像multipart/form-data.我这样做...
var postData = "";
var req = HttpWebRequest.Create("http://www.imageshack.us/upload_api.php");
req.Method = "POST";
req.ContentType = "multipart/form-data";
postData += "key=my_key_here&";
postData += "type=base64&";
// get base64 data from image
byte[] bytes = File.ReadAllBytes(@"D:\tmp\WpfApplication1\WpfApplication1\Images\Icon128.gif");
string encoded = Convert.ToBase64String(bytes);
postData += "fileupload=" + encoded;
byte[] reqData = Encoding.UTF8.GetBytes(postData);
using (Stream dataStream = req.GetRequestStream())
{
dataStream.Write(reqData, 0, reqData.Length);
}
var res = (HttpWebResponse)req.GetResponse();
var resStream = res.GetResponseStream();
var reader = new StreamReader(resStream);
string resString = reader.ReadToEnd();
txt1.Text = resString;
Run Code Online (Sandbox Code Playgroud)
但ImageShack抱怨说 …
我的C++程序当前通过pipe(popen("curl ..."))调用curl 将JSON数据文件POST到Web服务器.由于需要将JSON保存到文件并在子shell中调用curl,因此这具有明显的性能限制.我想重写它以使用libcurl,但我不清楚如何做到这一点.我传递给的命令行popen()是:
curl -s -S -D /dev/null -H "Content-Type: application/json" -X POST -d file-of-json http://server/handler.php
Run Code Online (Sandbox Code Playgroud)
在我需要发布之前,JSON数据(大约3K)位于RAM中的缓冲区中.我期望使用libcurl的CURLOPT_READFUNCTION将缓冲区假脱机到libcurl(但我对其他选项开放),并使用CURLOPT_WRITEFUNCTION来捕获服务器的回复,类似于我从popen的管道读取回复的方式.
所有这一切似乎都很简单.令人困惑的是我需要CURLOPT_POST,CURLOPT_HTTPPOST,CURLOPT_POSTFIELDS,CURLOPT_HTTPHEADER的哪种组合.我已经阅读了很多关于这个主题的帖子(没有双关语),没有一个与我的场景完全匹配.有什么建议?
[请注意,我通常没有任何URL编码的表单字段,如下所示:http://server/handler.php?I = do¬ = use&these = in&my = query]
创建RESTful WCF服务器有很多原因(很容易),如果你可以避免ASP及其安全框(如果你所做的只是返回信息的简单请求),那就更好了.请参阅:http://msdn.microsoft.com/en-us/library/ms750530.aspx了解如何执行此操作.
我发现处理AJAX(JQUERY)GET请求很容易.但是在POST中处理JSON很棘手.
以下是一个简单的GET请求合同的示例:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
String Version();
Run Code Online (Sandbox Code Playgroud)
实现就在这里(返回一个JSON)
public partial class CatalogService : ICatalogService
{
public String Version()
{
mon.IsActive = true;
this.BypassCrossDomain();
ViewModel.myself.TransactionCount++;
return ViewModel.myself.VersionString;
}
}
Run Code Online (Sandbox Code Playgroud)
啊,但如果你想发布一些JSON怎么办?你会发现很多关于堆栈溢出的文章告诉你所要做的就是:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
BuildResponse BuildToby(BuildRequest request);
Run Code Online (Sandbox Code Playgroud)
它将接收JSON消息,反序列化为Plain .NET对象(PONO)并让您使用它.事实上,当我在Fiddler中构建请求时,这工作正常.
POST /BuildToby HTTP/1.1
User-Agent: Fiddler
Content-Type: application/json
Host: localhost:4326
Content-Length: 1999
Run Code Online (Sandbox Code Playgroud)
但是,当您在JQUERY 1.8中使用以下AJAX时,您会发现一个SURPRISE:
通过指定"application/json"的内容类型,您会发现有一个"预检"检查由浏览器触发,以查看您是否可以发布除了www-url-encloded post消息之外的其他内容.(堆栈中有关于此溢出的注释).
var request = JSON.stringify({ FrameList: ExportData.buildList });
var jqxhr = $.ajax({
type: …Run Code Online (Sandbox Code Playgroud) 我想发送一个带有一个实际参数的简单POST请求:
@POST("/token")
@FormUrlEncoded
void extendSession(@Field("refresh_token")final String refreshToken);
Run Code Online (Sandbox Code Playgroud)
但这一要求也应该发送服务器,例如要求一些常数值client_id,client_secret而grant_type这是不变的,不应该是应用程序API的一部分.
做这个的最好方式是什么?
我只是Slim框架中的新手.我使用Slim框架编写了一个API.
POST应用程序将从iPhone应用程序发送到此API.此POST请求采用JSON格式.
但我无法访问iPhone请求中发送的POST参数.当我尝试打印POST参数的值时,每个参数都得到"null".
$allPostVars = $application->request->post(); //Always I get null
Run Code Online (Sandbox Code Playgroud)
然后我尝试获取即将到来的请求的主体,将主体转换为JSON格式并将其作为对iPhone的响应发回.然后我得到了参数的值,但它们的格式非常奇怪,如下所示:
"{\"password\":\"admin123\",\"login\":\"admin@gmail.com\",\"device_type\":\"iphone\",\"device_token\":\"785903860i5y1243i5\"}"
Run Code Online (Sandbox Code Playgroud)
所以有一件事是肯定的,POST请求参数将来到这个API文件.虽然它们无法进入$application->request->post(),但它们正在进入请求体内.
我的第一个问题是如何从请求主体访问这些POST参数,我的第二个问题是为什么请求数据在将请求主体转换为JSON格式后显示为如上所述的奇怪格式?
以下是必要的代码段:
<?php
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
//Instantiate Slim class in order to get a reference for the object.
$application = new \Slim\Slim();
$body = $application->request->getBody();
header("Content-Type: application/json");//setting header before sending the JSON response back to the iPhone
echo json_encode($new_body);// Converting the request body into JSON format and sending it as a response back to the iPhone. After execution of this step I'm getting the above …Run Code Online (Sandbox Code Playgroud) 我有放心的POST请求的问题.
此代码有效:
given().contentType(ContentType.JSON).body("{\"key\": \"val\"}").
when().post(url + resource).then().assertThat().statusCode(200).body("otherVal", equalTo(otherVal));
Run Code Online (Sandbox Code Playgroud)
但我试图使用param()或parameter()类似的方法:
这个给出:
given().parameter("key", "val").
when().post(url + resource).then().assertThat().statusCode(200);
Run Code Online (Sandbox Code Playgroud)
Expected status code <200> doesn't match actual status code <415>.
这个:
given().parameter("key", "val").
when().post(url + resource).then().assertThat().body("otherVal", equalTo(otherVal));
Run Code Online (Sandbox Code Playgroud)
java.lang.IllegalStateException: Expected response body to be verified as JSON, HTML or XML but no content-type was defined in the response.
Try registering a default parser using:
RestAssured.defaultParser(<parser type>);
还有这个:
RestAssured.defaultParser = Parser.JSON;
given().parameter("key", "val").
when().post(url + resource).then().assertThat().body("otherVal", equalTo(otherVal));
Run Code Online (Sandbox Code Playgroud)
java.lang.IllegalArgumentException: The JSON input text should …
我想bash在发出POST请求后执行一个脚本。到目前为止,我正在使用它Postman来发送请求,但我想知道是否可以从bash脚本以及将json文件作为参数以某种方式执行此操作。
curl到目前为止,我已经研究过,但它不起作用:
bash文件
curl -X POST -d req.json http://localhost:9500
Run Code Online (Sandbox Code Playgroud)
JSON 文件 ( req.json)
{
"id":5,
"name":"Dan",
"age":33,
"cnp":33,
"children":100,
"isMarried":0
}
Run Code Online (Sandbox Code Playgroud)
我只是收到错误:
HTTP/1.0 503 Service Unavailable
Run Code Online (Sandbox Code Playgroud)
与尾随 HTML
我已经使用HTTP POST协议绑定在Web SSO的SAML配置文件之后实现了我的服务提供者和识别提供者.但是,<AuthnStatement>如果来自服务提供商的HTTP POST与身份提供商上的会话无关,身份提供商将如何提供,我感到有点困惑.
有人可以告诉我怎么能做到这一点?
我可以使用的另一种方法是HTTP重定向绑定,但这需要用户代理干预(即浏览器),通常使用User-Agent作为pass-thru中介来促进请求 - 响应消息交换.因此,我宁愿使用HTTP POST,因为消息交换发生在服务器端,因此用户看不到屏幕上发生任何事情.
但是,对于我如何能够将会话与请求联系起来,使用HTTP重定向更有意义.由于通过用户代理促进了HTTP重定向,因此对IdP的请求将具有会话(如果先前已经过身份验证).我没有得到的是如何发送 由JST回答<AuthnRequest>HTTP重定向.
所以我有点困惑,很想听听其他人在做什么.以下是我的问题:
IsPassive选项<AuthnRequest>,如何将服务提供者的请求绑定到身份提供者的会话?换句话说,如果POST来自服务提供商(在技术上是匿名会话),身份提供商如何知道谁在提出请求?<AuthnRequest>如果我使用HTTP重定向,如何发送到身份提供程序?如果我在上面的解释中不清楚,请注意混淆.我正在实现IdP和SP(通过插件).IdP是一个现有的应用程序,我希望SP(第三方系统)用于身份验证(即Web SSO).我正在开发一个简单的PoC.SP实际上是第三方Spring应用程序,我正在开发一个插件来执行SAML操作.
我应该提到我正在尝试使用该IsPassive选项,这意味着用户代理在消息交换期间不起作用.它只是启动SAML派对的催化剂.对?考虑到这一点,假设用户在步骤1中是匿名的,那么SP向IdP发送了什么以允许IdP确定用户是否已经过身份验证?由于IsPassive,HTTP POST不会通过User-Agent发送
问题1修订:如何IdP进行解析委托时,AuthnRequset与发送IsPassive的选项?
直接从SAML 2.0配置文件,第15页,第417到419行:
在步骤4中,通过在此配置文件范围之外的某些方式提供的标识来标识主体.
我真正想要的是解释如何实施some means.
我需要一个简单的客户端方法,它可以在HTTP POST请求中发送布尔值,以及一个侦听的服务器端函数,并且可以将POST内容保存为var.
我无法找到有关如何使用的信息httplib.
请给我一个简单的例子,使用localhost作为http连接.