【问题标题】:POST between JApplet and Django webServerJApplet 和 Django webServer 之间的 POST
【发布时间】:2012-09-28 12:26:39
【问题描述】:

我对 Django 和 Japplet 还很陌生,这是我第一个使用它们的项目。 Japplet 从 django 静态文件夹中获取一些图像,并允许用户添加一些线条和标记。 最后,当单击 JApplet 上的“保存”按钮时,它应该对 Django 服务器进行一些 POST 调用,以保存标记和行。 其实我只是用marker测试,做不到。

这是标记的模型:

class Point(models.Model):
    id_edificio = models.ForeignKey(Building)
    RFID = models.CharField(max_length=200)
    x = models.IntegerField()
    y = models.IntegerField()
    piano = models.IntegerField()
    ingresso = models.BooleanField()

他的观点:

def point(request, id_edificio, RFID, x, y, piano):
    point = csrf_exempt(point)
    if request.method == 'POST':
        get_object_or_404(Building, pk=id_edificio)
        p = Point()
        p.id_edificio = id_edificio
        p.RFID = RFID
        p.x = x
        p.y= y
        p.piano = piano
        p.ingresso = True
        p.save()

我还没有实现模板,因为我不需要使用网络浏览器访问此视图。

网址:

 url(r'^buildings/generate/point', 'buildings.views.point'),

JApplet保存方法:

private void saveData(MarkerArrayList markers, PathArrayList paths) {
    String response;
    URL endpoint = null;
    try {
    endpoint = new URL("http://127.0.0.1:8000/buildings/generate/point");
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }

    for(Marker m: markers) {
        Reader data = new StringReader("id_edificio="+id_building+"&"+m.toString());
        try {
            Post.postData(data, endpoint);
        } catch (Exception e) {e.printStackTrace();}
    }
}

标记 toString() 方法:

public String toString() {
    return "RFID="+ RFID + "&" +
        "x=" + 
        "y=" + y + "&" + 
        "piano=" + floor + "&";
}

我假设我的 java 方法 Post 是正确的。如果你想看,可以问我;)

来自 Django 服务器的 POST 错误:

[28/Sep/2012 07:21:46] "POST /buildings/generate/point HTTP/1.1" 403 2294

我不知道要试试知道,我在你手中。

谢谢你

【问题讨论】:

    标签: java django post http-status-code-403


    【解决方案1】:

    错误的数量令人难以置信。

    所以这是标记的新视图,现在我将忽略 csrf 令牌:

    @csrf_exempt
    def point(request):
        if request.method == 'POST': 
            p = Point()
            building = Building.objects.get(pk = request.POST["id_edificio"]) 
            p.id_edificio = building
            p.RFID = request.POST["RFID"]         
            p.x = request.POST["x"] 
            p.y= request.POST["y"]
            p.piano = request.POST["piano"] 
            p.ingresso = request.POST["ingresso"]
            p.save() 
    

    而且它有效! Marker toString() 方法中也有一些小错误(作为 'X' 而不是 'x'),但它们只是小错误。

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 2012-09-30
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多