GVKun编程网logo

php – cURL将数据发布到asp.net页面(php curl文件上传)

10

针对php–cURL将数据发布到asp.net页面和phpcurl文件上传这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展AjaxGET请求到ASP.NET页面方法?、asp.net-mvc

针对php – cURL将数据发布到asp.net页面php curl文件上传这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Ajax GET请求到ASP.NET页面方法?、asp.net-mvc – 将数据发布回ASP.NET MVC子操作、asp.net-mvc – 尝试将asp.net web发布到Azure时,Visual Studio 2015冻结、asp页面上的失败会话到asp.net页面等相关知识,希望可以帮助到你。

本文目录一览:

php – cURL将数据发布到asp.net页面(php curl文件上传)

php – cURL将数据发布到asp.net页面(php curl文件上传)

我试图使用curl从PHP中调用asp.net页面中的__doPostback javascript函数.

我了解到这可以通过使用适当的参数向asp.net页面发布请求来完成.

所以在卷曲中,

>我发出get请求/只需使用file_get_contents来检索初始页面.
>从中,我提取__VIEWSTATE和__EVENTVALIDATION的值.

一切似乎都好.

现在,我知道我们需要使用带有__VIEWSTATE的cURL和其他所需参数来发布请求. (asp.net表单中的字段值)

我无法正确构造CURLOPT_POSTFIELDS.

例如,我正在尝试这个,

$postoptions1='__EVENTTARGET='.('ctl00$ContentPlaceHolder1$gRef').'&__EVENTARGUMENT='.('$2');
$postoptions2 =  '&__VIEWSTATE='.urlencode($viewState) ;
$otherparams = '&ctl00$ContentPlaceHolder1$ddlName=Abc';

在使用setopt进行CURLOPT_POSTFIELDS之前,我正在做,

urlencode ($postoptions1.$postoptions2.$otherparams)

这不起作用.未显示提交结果,这意味着在我的帖子请求中找不到所需的参数__VIEWSTATE.

如果我更改参数的顺序并将__VIEWSTATE作为第一个参数,则会显示结果页面,但不会遵循其他参数值.

我认为我对参数进行编码的方式存在一些问题.

请告诉我如何构建对asp.net页面的post请求的参数.

谢谢.

–Edited–

这是完整的代码:
$resultsPerPage = ’10’ ;
$url =“www.example.com”; //网址已更改

$curl_connection = curl_init($url);
    function sendCurl($curl_connection,$url,$params,$isPost = false){

//$post_string = $params;
$post_string = http_build_query($params);
//$post_string = build_query_string($params);
//$post_string = urlencode($params); 

echo 'After Encode'.$post_string;
   $cookie="/cookie.txt";


   //set options
    curl_setopt($curl_connection,CURLOPT_CONNECTTIMEOUT,300);
    curl_setopt($curl_connection,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    curl_setopt($curl_connection,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl_connection,CURLOPT_HEADER,0); // don't return headers 

    curl_setopt($curl_connection,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($curl_connection,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($curl_connection,CURLOPT_REFERER,$url);
    if($isPost) {
        curl_setopt ($curl_connection,CURLOPT_POST,true);
        //set data to be posted
        curl_setopt($curl_connection,CURLOPT_POSTFIELDS,$post_string);
        curl_setopt($curl_connection,CURLOPT_COOKIEJAR,$cookie);

    }
    else {
    curl_setopt($curl_connection,CURLOPT_COOKIEFILE,$cookie);
    }
   $response1 = curl_exec($curl_connection);
   if($response1 === false)
    {
        echo 'Curl error: ' . curl_error($curl_connection);
    }
    else
{
    echo 'Operation completed without any errors';
}
   return $response1;
}  **// First time,get request to asp.net page

$response1 = sendCurl($curl_connection,”,false);
$VIEWSTATE = getvstateContent($响应1);
$eventValidation = getEventValidationContent($response1);
$simpleParams =’& __ VIEWSTATE =’.$viewState.’& ctl00 $ContentPlaceHolder1 $ddlManuf =& ctl00 $ContentPlaceHolder1 $ddlCrosstype =& ctl00 $ContentPlaceHolder1 $ddlPageSize =’.$resultsPerPage.’& ctl00 $ContentPlaceHolder1 $btnSearch =搜索&安培; ctl00_ToolkitScriptManager1_HiddenField =安培; __ EVENTTARGET =安培; __ EVENTARGUMENT =’;
//第二篇文章 – 用于提交搜索表单
$response2 = sendCurl($curl_connection,$simpleParams,true);
—- **

解决方法

你想要的是 http_build_query,它将数组格式化为正确的HTTP参数.

编辑:澄清这应该是什么样子:

$params = array(
    '__EVENTTARGET' => 'ctl00$ContentPlaceHolder1$gRef','__EVENTARGUMENT' => '$2','__VIEWSTATE' => $viewState,'ctl00$ContentPlaceHolder1$ddlName' => 'Abc'
);

curl_setopt($curlHandler,http_build_query($params));

另外,什么是ctl00 $ContentPlaceHolder1 $ddlName应该是什么?

Ajax GET请求到ASP.NET页面方法?

Ajax GET请求到ASP.NET页面方法?

我在本周遇到的一种情况:我们有一个jQuery Ajax调用,该调用返回到服务器以获取数据

$.ajax({    type: "POST",    contentType: "application/json; charset=utf-8",    url: fullMethodPath,    data: data,    dataType: "json",    success: function(response) {        successCallback(response);    },    error: errorCallback,    complete: completeCallback});

fullMethodPath是页面上静态方法的链接(比如/MyPage.aspx/MyMethod)。

public partial class MyPage : Page{    // snip    [WebMethod]    public static AjaxData MyMethod(string param1, int param2)    {        // return some data here    }}

这行得通,没问题。

一位同事试图用类型为“
GET”的电话代替此呼叫。它坏了,我不得不修复它。最终,我回到了POST,因为我们需要快速修复,但是它一直困扰着我,因为在这种情况下,从语义上来说GET更“正确”。

据我了解,jQuery将数据中的对象转换为查询字符串:/MyPage.aspx/MyMethod?param1=value1&param2=value2但是我能得到的只是页面的内容MyPage.aspx

这仅仅是Page方法的“功能”,还是有一种使GET请求起作用的方法?

答案1

小编典典

出于安全原因,ASP.Net AJAX页面方法仅支持POST请求。

asp.net-mvc – 将数据发布回ASP.NET MVC子操作

asp.net-mvc – 将数据发布回ASP.NET MVC子操作

因为我们可以从主视图组成单个视图的局部视图(例如,使用RenderAction,指定子控制器),所以子视图呈现的输入可以被定向到子控制器,而主视图呈现的输入是指向主视图控制器?首先,将数据发布到两个动作方法似乎很奇怪,但它与使用部分视图的复合性质一致.

这可行还是实用?

解决方法

发送数据的位置取决于包含这些输入元素的表单的action属性.因此,在生成表单时,您可以指定要发布到的控制器和操作:

@using (Html.BeginForm("SomeAction","SomeController"))
{
    ...
}

相同的技术可用于在主视图中呈现的表单,并指定在提交时应发布的控制器和操作.

asp.net-mvc – 尝试将asp.net web发布到Azure时,Visual Studio 2015冻结

asp.net-mvc – 尝试将asp.net web发布到Azure时,Visual Studio 2015冻结

我创建了一个ASP.NET MVC 5应用程序,并尝试将其发布到Azure(我有一个有效的订阅).当我右键单击项目并选择“发布到Azure”时,模式“创建应用程序服务”显示并冻结.我必须杀死visual studio进程来关闭它.

我已经在我的办公室网络和家庭中的几个VM,一些Windows Server 2012和一些Windows 10中尝试过它,所以我可以肯定地认为这不是特定环境的问题,而是更大的问题.

有任何想法吗?

解决方法

当前的Visual Studio 2015工具(Azure SDK 2.8.1)至少需要创建一个资源组.

您可以通过在Azure Portal中使用的订阅中创建资源组来解决此问题.

我在项目GitHub网站上打开了一个问题.见issue #1704.

希望有所帮助.

asp页面上的失败会话到asp.net页面

asp页面上的失败会话到asp.net页面

我网站的某些部分是Asp,另一部分是Asp.Net.
我使用session来保存当前用户在Asp页面中的信息.
但是,在重定向到 Asp.net页面时会话丢失.

有时,会话将保存在第一个重定向的Asp.net页面中.
过了一会儿,我点击一个按钮,发现该会话仍然丢失.

我对这种情况感到很困惑.
怎么会发生这种情况?

PS:
1.我检查了超时配置,似乎运行良好.
2.浏览器中的cookie配置看起来很正常.

解决方法

ASP和ASP.NET不共享会话状态.它们是完全不同的系统.

如果要在两个系统之间以某种方式共享会话状态,可以使用本文中概述的方法:http://msdn.microsoft.com/en-us/library/aa479313.aspx

关于php – cURL将数据发布到asp.net页面php curl文件上传的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Ajax GET请求到ASP.NET页面方法?、asp.net-mvc – 将数据发布回ASP.NET MVC子操作、asp.net-mvc – 尝试将asp.net web发布到Azure时,Visual Studio 2015冻结、asp页面上的失败会话到asp.net页面等相关内容,可以在本站寻找。

本文标签: