我使用的HttpClient#执行(HttpPost,ResponseHandler所)org.apache.http.client.HttpResponseException:内部服务器错误而发布的XML字符串到服务器
它工作正常发送XML字符串到我的web应用程序当字符串只包含一个标记时,如果两个相同的标记位于根标记之后,则它返回内部服务器错误。例如:
<Class>
<Student>Some Elements and Attributes</Student>
<Student>Some Elements and Attributes</Student>
</Class>
我的代码是在这里创建XML字符串:
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
//root element
Document document = docBuilder.newDocument();
Element rootElement = document.createElement("Class");
document.appendChild(rootElement);
Element student = document.createElement("Student");
rootElement.appendChild(student);
Attr name = document.createAttribute("Name");
name.setValue("");
student.setAttributeNode(name);
//Courses
Element courses = document.createElement("Courses");
Element course = document.createElement("Course");
Attr name = document.createAttribute("Name");
name.setValue("any name");
level.setAttributeNode(name);
courses.appendChild(course);
student.appendChild(courses);
// write the content into xml string
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
StringWriter writer = new StringWriter();
Result result = new StreamResult(writer);
Source source = new DOMSource(document);
transformer.transform(source, result);
writer.close();
xml = writer.toString();
这里是发送XML字符串代码:
String url = "My URL string";
DefaultHttpClient httpClient = new DefaultHttpClient();
ResponseHandler<String> res = new BasicResponseHandler();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("param1", "student name"));
nameValuePairs.add(new BasicNameValuePair("param2", xmlString));
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
String response = httpClient.execute(httpPost, res);
此代码创建的问题。 StackTrace在这里:
09-21 00:58:29.486: WARN/System.err(7450): org.apache.http.client.HttpResponseException: Internal Server Error
09-21 00:58:29.490: WARN/System.err(7450): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71)
09-21 00:58:29.494: WARN/System.err(7450): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59)
09-21 00:58:29.497: WARN/System.err(7450): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
09-21 00:58:29.501: WARN/System.err(7450): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
09-21 00:58:29.501: WARN/System.err(7450): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
09-21 00:58:29.505: WARN/System.err(7450): at com.example.httpandroidtutorial.HttpAndroidTutorialActivity.onClick(HttpAndroidTutorialActivity.java:122)
09-21 00:58:29.509: WARN/System.err(7450): at android.view.View.performClick(View.java:2461)
09-21 00:58:29.513: WARN/System.err(7450): at android.view.View$PerformClick.run(View.java:8888)
09-21 00:58:29.517: WARN/System.err(7450): at android.os.Handler.handleCallback(Handler.java:587)
09-21 00:58:29.517: WARN/System.err(7450): at android.os.Handler.dispatchMessage(Handler.java:92)
09-21 00:58:29.521: WARN/System.err(7450): at android.os.Looper.loop(Looper.java:123)
09-21 00:58:29.525: WARN/System.err(7450): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-21 00:58:29.529: WARN/System.err(7450): at java.lang.reflect.Method.invokeNative(Native Method)
09-21 00:58:29.533: WARN/System.err(7450): at java.lang.reflect.Method.invoke(Method.java:521)
09-21 00:58:29.533: WARN/System.err(7450): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
09-21 00:58:29.537: WARN/System.err(7450): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-21 00:58:29.540: WARN/System.err(7450): at dalvik.system.NativeStart.main(Native Method)
这些HttpResponseExceptions的原因是什么?
服务器端可能出现哪种类型的错误? – Nuraiz
这是你的服务器,对吧?你需要进入处理服务器请求的代码并在那里进行调试。 –
感谢您的帮助。我已经解决了这个问题。该错误属于财产。我使用** google.appengine.ext.db#StringProperty(required = True)**为我的xml字符串,我已将其更改为** google.appengine.ext.db#TextProperty(required = True)** – Nuraiz