【问题标题】:using HTTPRequest setPayload in google app engine在谷歌应用引擎中使用 HTTPRequest setPayload
【发布时间】:2012-11-04 07:10:27
【问题描述】:

我正在尝试通过 Google App Engine 进行 HTTPRequest Post。 这就是我目前所拥有的

URL url = new URL("http://myurl.com/myfile.php");
HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
request.setPayload(########);
HTTPResponse response = URLFetchServiceFactory.getURLFetchService().fetch(request);

在这里我需要输入一些配对值(例如“email”、“hi@example.com”等) 由于 setPayload 接受 byte[] 我不知道如何转换我的配对值 成字节。

我已经搜索了其他帖子,但我非常卡住。

编辑: 我已经改成这个了,但是还是不行

byte[] data = ("EMAIL=bo0@gmail.com&TITLE=evolution&COMMENT=comments&PRICE=5000;").getBytes();
try {
URL url = new URL("http://www.bo.x10.mx/nPost.php");
HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
request.setPayload(data);
HTTPResponse response = URLFetchServiceFactory.getURLFetchService().fetch(request);

这是我在php网站上的。

<?php
include "path/conf.php"; //logging into database works
$tb_name = 'Post';
$EMAIL=$_POST['EMAIL'];
$TITLE =$_POST['TITLE'];
$COMMENT =$_POST['COMMENT'];
$PRICE =$_POST['PRICE'];
if(!isset($EMAIL) || !isset($TITLE ) || !isset($PRICE )|| !isset($COMMENT)){
header('HTTP/1.0 412 Precondition Failed', true, 412);
die('Bad data');
}
$sql="INSERT INTO $tb_name(EMAIL, TITLE, COMMENT, PRICE) VALUES ('$EMAIL', '$TITLE ', '$COMMENT ', '$PRICE ')";
$result=mysql_query($sql);
if($result==TRUE){
echo "successfully inserted into table!";}
else{
echo "error in inserting into table!";
header('HTTP/1.0 500 Internal Server Error', true, 500);}
ob_end_flush();
exit();
?>

EDIT2:这是一个工作代码

try{
byte[] data = ("EMAIL=bo0@gmail.com&TITLE=evolution&COMMENT=comments&PRICE=5000").getBytes("UTF-8");
URL url = new URL("http://www.box.com/nost.php");
HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
request.setPayload(data);
HTTPResponse response = URLFetchServiceFactory.getURLFetchService().fetch(request);
}

我的数据库字符串字段是 UTF-8 类型

【问题讨论】:

    标签: google-app-engine http-post httprequest urlfetch


    【解决方案1】:

    您使用请求正文创建String,然后获得字节数组。例如我们有:

    URL url = new URL("http://myurl.com/myfile.php");
    HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
    String body = "email=" + email + "&mpla=" + mpla;
    request.setPayload(body.getBytes("UTF-8"));
    HTTPResponse response = URLFetchServiceFactory.getURLFetchService().fetch(request);
    

    希望这会有所帮助!

    【讨论】:

    • 您还应该设置适当的内容类型。
    • 感谢灭霸的回答,我试过了,这似乎不起作用。这是我目前所拥有的。 byte[] data = ("EMAIL=bo90@gmail.com&TITLE=evolution&COMMENT=cmets&PRICE=5000;").getBytes(); URL url = 新 URL("www.somewbesite/myPHPFILE.php"); HTTPRequest 请求 = new HTTPRequest(url, HTTPMethod.POST); request.setPayload(数据); HTTPResponse 响应 = URLFetchServiceFactory.getURLFetchService().fetch(request);在 php 网站上 $EMAIL=$_POST['EMAIL']; $TITLE =$_POST['TITLE']; $COMMENT =$_POST['COMMENT']; $PRICE =$_POST['PRICE'];
    • 并不是真正的错误,它似乎是在没有设置任何这些字段的值的情况下进行 http post。我将编辑我的帖子,以便我可以输入所有代码
    • 嗨灭霸,我刚刚发现所有的值都被放入了电子邮件字段,(即“bo0@gmail.com;TITLE=evolution;COMMENT=cmets;PRICE=5000;”)和该字段的其余部分为空。
    • 嗯,尝试将&amp;amp; 替换为&amp;
    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多