Javascript kullanarak Jersey Formuna karşı bazı form verilerini göndermeye çalışıyorum.Javascript Form Yazısı Jersey MultiFormData - Boş İşaretçi İstisnası
var form = document.getElementById('form');
var formdata = new FormData(form);
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("xmlTextBox").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST", "PostXml", true);
xmlhttp.setRequestHeader('Content-Type', 'multipart/form-data');
xmlhttp.setRequestHeader("Content-length", formdata.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(formdata);
Jersey Kaynak şuna benzer: İşte javascript
@Path("/Resource")
public class MyClass {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_XML)
public String postXML(@FormDataParam("param1") String param1,
@FormDataParam("param2") String param2){
return "test";
}
gerçek versiyonu daha params ve tam kodu içerir, ancak ek açıklamaları aynıdır.
224 for (final String parameterName : parameters) {
225 String parameterValue = mediaType.getParameters().get(parameterName);
226
227 if (parameterValue.startsWith("\"")) {
228 parameterValue = parameterValue.substring(1, parameterValue.length() - 1);
229 unquotedParams.put(parameterName, parameterValue);
230 }
231 }
I; için kundakçı kullandım: tomcat üzerinden çalışan, bu aşağıdaki özel durum üretir: o param benziyor istisna üretti kaynağında bakarak
java.lang.NullPointerException
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.unquoteMediaTypeParameters(MultiPartReaderClientSide.java:227)
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readMultiPart(MultiPartReaderClientSide.java:154)
at com.sun.jersey.multipart.impl.MultiPartReaderServerSide.readMultiPart(MultiPartReaderServerSide.java:80)
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readFrom(MultiPartReaderClientSide.java:144)
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readFrom(MultiPartReaderClientSide.java:82)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:488)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:552)
içinden gelmiyor Bir izleme koydu ve düz bir HTML gönderisiyle karşılaştırıldığında javascript kullanırken, ad/değerler farklı şekilde geliyor. HTML için izlemesinde içerik türü bir yükleme akışında döndürülür, post:
Request Headers From Upload Stream
Content-Length 1756
Content-Type multipart/form-data; boundary=---------------------------1523409566516443041527622966
Ama javascript sadece standart bir mesaj ya da bir şey gibi görünüyor? Javascript multiformdata yazıyı nasıl çoğaltırım herhangi bir fikir ??
Göründüğü gibi herhangi bir fikir, her şeyi yoldan geçiriyorum. Bunu normal bir HTML form postası kullanarak da denedim ve iyi çalışıyor, bu yüzden javascript ile ilgili olmalıdır.
Vay, ben o istek başlıkları olmadan başladı eminim ?! Muhtemelen aynı anda başka bir şey değiştirdim. Çok teşekkürler! – thomascrabs
@thomascrabs Hoş Geldiniz. – Musa
@Musa Android ile çalışıyorum. Çözümünüz benim için de çalıştı. Bunun sebebinin ne olduğunu söyleyebilir misin? –