我正在与一家公司合作,该公司制作了一个脚本来将 POST 数据发送到我的 PHP 脚本(所有设置和端口转发都正确等)。
问题是,他们说我的脚本没有设置为处理 POST 请求。
这是他们的脚本:
尝试
strPost = strPost.Trim.Replace(" ", "%20")
Dim objRequest As HttpWebRequest = WebRequest.Create(strPostURL)
objRequest.Method = "POST"
objRequest.ContentLength = strPost.Length
objRequest.ContentType = "application/x-www-form-urlencoded"
Try
myWriter = New StreamWriter(objRequest.GetRequestStream())
myWriter.Write(strPost)
Catch eg As Exception
Finally
myWriter.Close()
End Try
Dim objResponse As HttpWebResponse = objRequest.GetResponse()
Dim sr As StreamReader
sr = New StreamReader(objResponse.GetResponseStream())
success = sr.ReadToEnd()
sr.Close()
success = "Post Successful"
Catch ex As Exception
success = ex.ToString
End Try
这是我的:
<?PHP
$website = $_POST['web'] ;
$name = $_POST['name'] ;
$tel = $_POST['tel'] ;
$town = $_POST['town'] ;
foreach($_POST as $key => $thisOne){
$out .= $key . ': ' . $thisOne ;
}
if($out)
mail('test@test.com', 'Test', $out) ;
?>
我不确定他们所说的我的脚本未设置为处理 POST 数据是什么意思,因为 $_POST 是正确的吗?
感谢您的回复,我也是这么想的,但他坚持认为我的脚本有问题。
这是他说他得到的错误:
他告诉我他仍然得到那个错误并且:
我们使用的代码适用于 Sales Force、Sage 和我们之前完成的其他 7 个自定义 CRM 集成。
:(
谢谢,我发现 http://apikitchen.com/ 允许我正确地测试它并且它恢复正常。谢谢你的帮助!一定是你说的他。
他现在告诉我他遇到了一个新错误!
他刚刚给我发了以下内容,有 .NET 经验的人能看出代码有什么问题吗?:
Try
strPost = "name=lf&town=london&country=uk&web=www.lf.com&tel=0123456789&keywords=sales&pages=5&multivisit=multihitdt=2012/04/30%2014:31referrer=google&landing=home"
strPost = strPost.Trim.Replace(" ", "%20")
Dim objRequest As HttpWebRequest = WebRequest.Create("http://mysite.dyndns-remote.com/myscript.php")
objRequest.Method = "POST"
objRequest.ContentLength = strPost.Length
objRequest.ContentType = "application/x-www-form-urlencoded"
Try
myWriter = New StreamWriter(objRequest.GetRequestStream())
myWriter.Write("name=lf&town=london&country=uk&web=www.lf.com&tel=0123456789&keywords=sales&pages=5&multivisit=multihitdt=2012/04/30%2014:31referrer=google&landing=home")
Catch eg As Exception
Finally
myWriter.Close()
End Try
Dim objResponse As HttpWebResponse = objRequest.GetResponse()
Dim sr As StreamReader
sr = New StreamReader(objResponse.GetResponseStream())
success = sr.ReadToEnd()
sr.Close()
success = "Post Successful"
Catch ex As Exception
success = ex.ToString
End Try
最佳答案
他传递给网络请求的 URI 似乎无效(异常显示它是空的)。这是您在此处显示的堆栈跟踪图像最后一行中的 strPostURL
参数。
告诉他在调用 SalesForcePost.fncPost
时使用正确的 URL,一切都应该没问题。
这绝不是你的错,与你没有正确处理 POST 没有任何关系。这是他的错。告诉他,如果他不相信你,就派他来给我们看一些代码。
编辑
至于新错误:同样的事情在这里。他没有传递有效的 URI 字符串。这可能是因为他正在传递类似“htt://sometest.com”或“http:/sometest.com”的内容。除非您发布所有必要的代码以查看如何调用 fncPost
方法以及 fncPost
方法的大部分代码 - 至少是部分代码,否则我们无法进一步帮助您他在其中创建网络请求。
您发布的代码不是他的真实代码,否则他不会得到“URI scheme not valid”异常。
关于php - 如何从 .NET 脚本接收 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10382732/