针对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文件上传)
- 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文件上传)
我了解到这可以通过使用适当的参数向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);
—- **
解决方法
编辑:澄清这应该是什么样子:
$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页面方法?
我在本周遇到的一种情况:我们有一个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¶m2=value2
但是我能得到的只是页面的内容MyPage.aspx
。
这仅仅是Page方法的“功能”,还是有一种使GET请求起作用的方法?
答案1
小编典典出于安全原因,ASP.Net AJAX页面方法仅支持POST请求。
asp.net-mvc – 将数据发布回ASP.NET MVC子操作
这可行还是实用?
解决方法
@using (Html.BeginForm("SomeAction","SomeController")) { ... }
相同的技术可用于在主视图中呈现的表单,并指定在提交时应发布的控制器和操作.
asp.net-mvc – 尝试将asp.net web发布到Azure时,Visual Studio 2015冻结
我已经在我的办公室网络和家庭中的几个VM,一些Windows Server 2012和一些Windows 10中尝试过它,所以我可以肯定地认为这不是特定环境的问题,而是更大的问题.
有任何想法吗?
解决方法
您可以通过在Azure Portal中使用的订阅中创建资源组来解决此问题.
我在项目GitHub网站上打开了一个问题.见issue #1704.
希望有所帮助.
asp页面上的失败会话到asp.net页面
我使用session来保存当前用户在Asp页面中的信息.
但是,在重定向到 Asp.net页面时会话丢失.
有时,会话将保存在第一个重定向的Asp.net页面中.
过了一会儿,我点击一个按钮,发现该会话仍然丢失.
我对这种情况感到很困惑.
怎么会发生这种情况?
PS:
1.我检查了超时配置,似乎运行良好.
2.浏览器中的cookie配置看起来很正常.
解决方法
如果要在两个系统之间以某种方式共享会话状态,可以使用本文中概述的方法: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页面等相关内容,可以在本站寻找。
本文标签: