1

我正在尝试编写程序来登录我的网站。但是我在向网页发送帖子请求时遇到问题。

这是我的代码

脚本.js

function doLogin() {
    httpClient = new Windows.Web.Http.HttpClient();
    httpClient.defaultRequestHeaders.userAgent.parseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
    var outputField = document.getElementById("test");

    var resourceAddress = new Windows.Foundation.Uri('http://localhost/test.php');
    var stringContent = new Windows.Web.Http.HttpStringContent("Data1=Value1&Data2=value");

    httpPromise = httpClient.postAsync(resourceAddress, stringContent).then(function (response) {
        return Helpers.displayTextResultAsync(response, outputField);
    });
    httpPromise.done(function () {

    }, Helpers.onError);
}

测试.php

<?php
     print_r($_SERVER);
     print_r($_POST);
?>

应要求回应

200 OK
Connection: Keep-Alive
Server: Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
Keep-Alive: timeout=5, max=100
Date: Wed, 23 Oct 2013 17:01:56 GMT
X-Powered-By: PHP/5.5.3
Content-Length: 1812
Content-Type: text/html

Array
(
    [MIBDIRS] => /xampp/php/extras/mibs
    [MYSQL_HOME] => \xampp\mysql\bin
    [OPENSSL_CONF] => /xampp/apache/bin/openssl.cnf
    [PHP_PEAR_SYSCONF_DIR] => \xampp\php
    [PHPRC] => \xampp\php
    [TMP] => \xampp\tmp
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_USER_AGENT] => Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
    [CONTENT_LENGTH] => 54
    [CONTENT_TYPE] => text/plain; charset=UTF-8
    [HTTP_HOST] => localhost
    [HTTP_CONNECTION] => Keep-Alive
    [HTTP_CACHE_CONTROL] => no-cache
    [PATH] => C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\
    [SystemRoot] => C:\Windows
    [COMSPEC] => C:\Windows\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    [WINDIR] => C:\Windows
    [SERVER_SIGNATURE] => <address>Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3 Server at localhost Port 80</address>

    [SERVER_SOFTWARE] => Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => ::1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => ::1
    [DOCUMENT_ROOT] => D:/xampp/htdocs
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => D:/xampp/htdocs
    [SERVER_ADMIN] => postmaster@localhost
    [SCRIPT_FILENAME] => D:/xampp/htdocs/test.php
    [REMOTE_PORT] => 2092
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => POST
    [QUERY_STRING] => 
    [REQUEST_URI] => /test.php
    [SCRIPT_NAME] => /test.php
    [PHP_SELF] => /test.php
    [REQUEST_TIME_FLOAT] => 1382547716.784
    [REQUEST_TIME] => 1382547716
)
Array
(
)

我在http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664尝试了 Microsoft 示例代码参考,但它似乎不起作用。

4

1 回答 1

2

您必须将 设置Content-Typeapplication/x-www-form-urlencoded。IE:

var stringContent = new Windows.Web.Http.HttpStringContent(
    "Data1=Value1&Data2=value",
    Windows.Storage.Streams.UnicodeEncoding.utf8,
    "application/x-www-form-urlencoded");
于 2013-10-23T17:50:01.410 回答