WebRequest 返回服务器内部异常500
WebRequest 返回服务器内部错误500
求助各位哥哥姐姐,我想用我使用HttpWebRequest 调用服务端的一个php脚本,但是GET或者POST方法都是这个错误:服务器内部错误500。
我不知道是客户端的代码写错了,还是服务端的代码写错了?
下面我贴出客户端的代码,这是使用的GET的代码。我也求证过《C#高级编程》,类的使用应该是没问题的。
这是服务端的代码,用PHP写的。主要用到target和message两个参数。我初学PHP,所以问题有可能出在这里?
我排除了两点:
1.服务端用的IIS,这个配置的是允许匿名访问,验证应该是没问题的。
2.用javascrip在浏览器提交就可以调用成功,但是用WebRequest就是不行,下面是javascrip的代码
小弟初学,求指点迷津!
------解决思路----------------------
500是服务器端的错误。
先用浏览器访问看看是否正常,如果正常,再检查客户端提交的参数是否有问题。
------解决思路----------------------
看了下,你的C#代码和js代码提交的方式 一个是 get一个是post
建议你在php代码中加上日志,看看C#提交的数据有没有 $_REQUEST到,可能 $_REQUEST['message'] 这个是null 所以出现异常
求助各位哥哥姐姐,我想用我使用HttpWebRequest 调用服务端的一个php脚本,但是GET或者POST方法都是这个错误:服务器内部错误500。
我不知道是客户端的代码写错了,还是服务端的代码写错了?
下面我贴出客户端的代码,这是使用的GET的代码。我也求证过《C#高级编程》,类的使用应该是没问题的。
private void sendMessage()
{
string strURL = string.Format("http://192.168.201.7:3333/send_mqtt/send_mqtt.php?target={0}&message={1}", textBoxTarget.Text, textBoxMessage.Text);
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
request.Method = "GET";
System.Net.HttpWebResponse response;
// 获得响应流
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.StreamReader myreader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);
string responseText = myreader.ReadToEnd();
myreader.Close();
MessageBox.Show(responseText);
}
这是服务端的代码,用PHP写的。主要用到target和message两个参数。我初学PHP,所以问题有可能出在这里?
<?php
require('etc/config.php');
require('lib/php_sam.php');
//create a new connection object
$conn = new SAMConnection();
//start initialise the connection
$conn->connect(SAM_MQTT, array(SAM_HOST => MQTT_SERVER_HOST, SAM_PORT => MQTT_SERVER_POST));
//create a new MQTT message with the output of the shell command as the body
$msgCpu = new SAMMessage($_REQUEST['message']);
//send the message on the topic cpu
$conn->send('topic://'.$_REQUEST['target'], $msgCpu);
$conn->disconnect();
echo 'MQTT Message to ' . $_REQUEST['target'] . ' sent: ' . $_REQUEST['message'];
?>
我排除了两点:
1.服务端用的IIS,这个配置的是允许匿名访问,验证应该是没问题的。
2.用javascrip在浏览器提交就可以调用成功,但是用WebRequest就是不行,下面是javascrip的代码
<script type="text/javascript">
$(function() {
$('label.messageLabel').labelOver('labelover');
$('label.targetLabel').labelOver('labelover');
$("#button").click(function() {
var target = 'tokudu/' + $('#messageTarget').val();
var message = $('#messageBody').val();
$('.sent').hide();
$('.loading').slideToggle('fast');
$.ajax({
url: 'send_mqtt.php',
type: 'POST',
data: {'target': target, 'message': message},
dataType: 'text',
timeout: 20000,
error: function(){
$('.loading').slideToggle('fast');
alert('Failed to communicate to the server. Try again!')
},
success: function(text){
$('.loading').slideToggle('fast');
if (text == '') {
alert('Failed to send the message. Try again!')
} else {
$('.sent').slideToggle('fast');
}
}
});
});
})
</script>
小弟初学,求指点迷津!
------解决思路----------------------
500是服务器端的错误。
先用浏览器访问看看是否正常,如果正常,再检查客户端提交的参数是否有问题。
------解决思路----------------------
看了下,你的C#代码和js代码提交的方式 一个是 get一个是post
建议你在php代码中加上日志,看看C#提交的数据有没有 $_REQUEST到,可能 $_REQUEST['message'] 这个是null 所以出现异常