这是我的观点(简化):
@login_required(login_url='/try_again')
def change_bar(request):
foo_id = request.POST['fid']
bar_id = request.POST['bid']
foo = models.Foo.objects.get(id=foo_id)
if foo.value > 42:
bar = models.Bar.objects.get(id=bar_id)
bar.value = foo.value
bar.save()
return other_view(request)
Run Code Online (Sandbox Code Playgroud)
现在我想检查此视图是否正常工作(在这个简化的模型中,Bar 实例是否在应该时更改值)。我该怎么办?
问这个问题似乎有点奇怪,但我无法弄清楚。
我已经浏览过 stackoverflow 上的链接和谷歌,事实上尝试了很多东西,但我无法得到解决方案。下面是一些值得一提的
如何强制 Angular2 使用 x-www-form-urlencoded 进行 POST
问题 - api 的请求选项始终为 400(错误请求)
见解 -
下面是在另一个项目上运行的代码
const headers = new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
});
const body = new HttpParams()
.set('grant_type', 'password')
.set('username', stateData.username)
.set('password', stateData.password)
.set('client_id', 'XXXXX-5B3C-4A7D-WEW-23BWWWF9B7872'); //Letters are dummy here for security reasons
//URL preceded by https
return this.http.post('abc.com/authtoken', body , {headers: headers }).pipe(
map(res => {
return res;
})
);
Run Code Online (Sandbox Code Playgroud)
现在,当我在另一个项目中尝试相同的代码时,它不会传递 OPTIONS 请求,抛出 400(错误请求)。
我们可以假设其余的事情都是为了使这项工作顺利进行。问题主要出在代码片段上。
最令人惊奇的是,当我在 url 中添加一个尾部斜杠(如 - authtoken/ …
我循环遍历表单上的已发布值,以便对它们执行某些操作(因此无法访问控件本身).这是我必须对这个项目采取的过程,这就是我这样做的原因.
在表单上我将有一个文件上传框但我不知道如何上传从中选择的文件,因为我不能这样做Control.SaveAs().当我使用Request.Form.Item[i]我选择的文件名返回发布的值时,但不是像我期望的那样完整路径.
有人能指出我正确的方向吗?
谢谢.
public ActionResult Index()
{
return view();
}
[HTTPPOST]
public ActionResult Index(){
return view();
}
Run Code Online (Sandbox Code Playgroud)
ASP.NET MVC中的两者有什么区别
我有一个ASP MVC3应用程序,它有几个HttpPost ActionResult方法.在调试会话期间,方法可以正常工作.但是当我在浏览器中发布和查看Web应用程序时,只有HttpPost方法失败.Firebug显示"未找到404".同一控制器中的其他非HttpPost方法工作正常.
更新:
1)该应用程序的已发布网址是localhost/psp.2)所有GET操作都返回http:// localhost/psp / 'controller'/'action'的URL .
3)POST操作返回http:// localhost / 'controller'/'action'的URL .
所以这似乎是一个路由问题.我在Global.asax.cs文件中唯一的路由是:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
请注意,Home控制器不包含任何HttpPost操作.失败的所有POST方法都在单独的控制器中.我试图调整此路由:psp/{controller}/{action}/{id}但后来收到403.14错误(仅供参考,我使用的是IIS 7.5).
我很困惑为什么这些HttpPost方法在调试期间工作但不在已发布的应用程序中工作.以下是发布后出现404错误的方法之一:
[HttpPost]
public ActionResult GetAreaSelTexResult(JSON_MapSelPars pars)
{
AreaSelTextResult myResult = new AreaSelTextResult();
using (var ctx = new prismEntities())
{
var q = from p in ctx.pPSPMapSummary_Sel(pars.areaType, pars.areaName, null, null,pars.goalCDL) select p;
// There should only be …Run Code Online (Sandbox Code Playgroud) 我花了很多时间研究使用Cocoa的POST请求.
我发现一些看起来不错的代码.我改变它就像它符合我的需要.但代码不起作用,我找不到bug,因为我对可可很新.
这是我的代码.
- (IBAction)sendForm:(id)sender
{
NSLog(@"web request started");
NSString *post = [NSString stringWithFormat:@"firstName=%@&lastName=%@&eMail=%@&message=%@", firstName.stringValue, lastName.stringValue, eMail.stringValue, message.stringValue];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"myDomain/form.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(theConnection)
{
webData = [[NSMutableData data] retain];
NSLog(@"connection initiated");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[webData appendData:data];
NSLog(@"connection received data"); …Run Code Online (Sandbox Code Playgroud) 我正在发出POST请求,将图片上传到网站。
在页面中,有一个FileUpload和一个input (textBox),在fiddler中,我发现页面正在使用“多部分发布”请求模式发送一些数据,(Content Disposition: multipart-formdata;)
一切似乎都不错,因为在fiddler中,关于我的应用程序发布的内容和页面的内容都是相同的正在发送...只是关于标题顺序...
我的问题是,以正确的顺序放置标题真的很重要吗?如果可以,我该怎么办?(因为我们只是在请求中设置一些属性,所以没有地方可以设置顺序...)
感谢您的任何建议...
我有一个简单的Node.js Rest服务器,它使用Restify提供单个POST服务.我正在尝试编写一个简单的Mocha测试,但它会因超时而失败,尽管成功使用了REST控制台测试(浏览器插件).
我的服务器代码:
/**
* Module dependencies
*/
var restify = require('restify');
var events = require('events');
var util = require('util');
/**
* Create App
*/
var server = restify.createServer({
name: 'test',
version: '0.0.1'
});
var eventsEmitter = new events.EventEmitter();
/**
* Configuraion
*/
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
/**
* Routes
*/
server.post('/post', function (req, res, next) {
var text = "";
req.setEncoding("utf8");
req.on("data", function (chunk) {
text += chunk;
});
req.on("end", function () {
res.send(200, {ok: 'ok'});
});
return next();
}); …Run Code Online (Sandbox Code Playgroud) 我的前端应用程序grunt在端口上的实时服务器上运行9100,而我的PHP服务器在端口上80.主机是相同的,只是端口不同.
当我向某些数据发送POST请求时,我在预检请求上收到错误.http://dev.site.dev/api/gistJSON404OPTIONS
我已经CORS在apache配置中添加了标头:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "X-Requested-With, accept, content-type"
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
Run Code Online (Sandbox Code Playgroud)
``并重新启动服务器但仍然遇到问题.
我应该index_option()在gist控制器中添加方法吗?或问题出在其他地方?
我想将一堆数据,转换为json,作为字符串,发送到Web API POST方法.我可以发送一个简单的字符串,但是当我尝试发送字符串化的json数据时,甚至没有达到该方法 - 显然复杂的字符串不被视为有效的字符串值或其他东西.
当从客户端传递"randomString"时,这是有效的:
[Route("{unit}/{begindate}/{enddate}/{stringifiedjsondata}")]
[HttpPost]
public void Post(string unit, string begindate, string enddate, string stringifiedjsondata)
{
// test
string jsonizedData = stringifiedjsondata;
Run Code Online (Sandbox Code Playgroud)
string dataAsJson = "randomString";
String uriToCall = String.Format("/api/produceusage/{0}/{1}/{2}/{3}", _unit, beginRange, endRange, dataAsJson);
HttpResponseMessage response = await client.PostAsync(uriToCall, null);
Run Code Online (Sandbox Code Playgroud)
当字符串是json数据时,例如:
[
{
"ItemDescription": "DUCKBILLS, GRAMPS-EIER 70CT 42#",
"PackagesMonth1": 1467, . . . }]
Run Code Online (Sandbox Code Playgroud)
...这是行不通的.我通过使用JSON.NET将通用列表转换为json来创建此字符串,如下所示:
string dataAsJson = JsonConvert.SerializeObject(_rawAndCalcdDataAmalgamatedList, Formatting.Indented);
String uriToCall = String.Format("/api/produceusage/{0}/{1}/{2}/{3}", _unit, beginRange, endRange, dataAsJson);
HttpResponseMessage response = await client.PostAsync(uriToCall, null); …Run Code Online (Sandbox Code Playgroud) http-post ×10
c# ×2
angular8 ×1
angularjs ×1
asp.net ×1
asp.net-mvc ×1
cocoa ×1
codeigniter ×1
cors ×1
django ×1
django-views ×1
html ×1
http-error ×1
http-request ×1
httpresponse ×1
json.net ×1
mocha.js ×1
node.js ×1
restify ×1
security ×1