0

我的问题已解决 服务器的所有者删除了一些代码,以检查发送 POST/GET 方法的基本原理是否正常工作并且工作正常。

我仍然不知道问题是什么,但这肯定不是我的问题哈哈


我正在尝试将POST方法发送到服务器,但事实证明服务器获得了一个GET方法。我们让它在 iphone 上工作,所以服务器是正确的。

这是我为发送数据而编写的代码:

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://myurl.nl/casus");
    httppost.setHeader("Authorization", "xxxxxxxxxxxxxxx");
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        //casus
        nameValuePairs.add(new BasicNameValuePair("casusid", casus.id+""));

        String woorden = "[";
        for(int i = 0; i < words.length; i++){
            woorden += "\""+words[i]+"\"";
            if(i != words.length-1){
                woorden += ",";
            }
        }
        woorden += "]";
        nameValuePairs.add(new BasicNameValuePair("woorden", woorden));
        //info
        SharedPreferences sharedPref = getSharedPreferences("omapp", MODE_PRIVATE);
        String age = sharedPref.getString("age", "");
        String sex = sharedPref.getString("sex", "");
        nameValuePairs.add(new BasicNameValuePair("leeftijdscategorie", age));
        nameValuePairs.add(new BasicNameValuePair("geslacht", sex));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        String responseBody = EntityUtils.toString(response.getEntity());
        Log.d("json", responseBody);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

PHP代码:

    // Service token authorization.
    require_once('../classlib/Auth.php');
    $auth = new Auth;
    if ( !$auth->valid() ) {
        header('HTTP/1.1 401 Unauthorized');
        exit;
    }

    // Setup casussen.
    require_once('../classlib/PDOFactory.php');
    require_once('../classlib/Casussen.php');
    $casussen = new Casussen;
    $casussen->setPDO(PDOFactory::create());

    $rs = (object) array();
    switch ( $_SERVER['REQUEST_METHOD'] ) {

        case 'GET': {
            mail('sdgsdgsdg@gmail.com', 'The get method was called', print_r($_SERVER,1));
            $fromcasusid = !empty($_GET['fromcasusid']) ? (int) $_GET['fromcasusid'] : null;
            $rs->casussen =$casussen->get($fromcasusid);
            break;
        }

        case 'POST': {
            mail('jsdgsdgsn@gmail.com', 'The post method was called', print_r($_SERVER,1));
            $casusreactie = json_decode(file_get_contents("php://input"));
            try {
                $casussen->post($casusreactie);
            } catch ( Exception $e ) {
                $rs->error = (object) array(
                    'code' => $e->getCode(),
                    'message' => $e->getMessage(),
                );
            }
            break;
        }

        default: {
            header('HTTP/1.1 405 Method Not Allowed');
            exit;
        }

    } // switch

    header('Content-type: application/json; charset=utf-8');
    exit(json_encode($rs));
4

2 回答 2

0

一次锻炼..

从 doGet 内部调用 doPost 方法

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{

doPOst(request, response)
}
于 2013-03-29T09:51:51.870 回答
0

我也有类似的问题。我可以通过添加“www”来修复它。到网址。但我想知道这是如何产生影响的,我已经成功地测试了使用没有“www”的 jQuery ajax 请求处理的服务器。.

于 2013-09-02T05:48:06.590 回答